最近做了个表单提交的页面,表单中有一组checkbox,提交后要获取已勾选的内容。该页面在IE和chrome(版本 25.0.1364.172 m)中运行正常,但在firefox中失败。
相关代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| function GetCheckBoxList(objName) {
var result = "";
var coll = document.all.item(objName)
if (!coll) return result;
if (coll.length) {
for (var i = 0; i < coll.length; i++) {
if (coll.item(i).checked) {
result += (result == "") ? coll.item(i).value : ("," + coll.item(i).value);
}
}
} else {
if (document.all.item(objName).checked) {
result = document.all.item(objName).value;
}
}
return result;
} |
function GetCheckBoxList(objName) {
var result = "";
var coll = document.all.item(objName)
if (!coll) return result;
if (coll.length) {
for (var i = 0; i < coll.length; i++) {
if (coll.item(i).checked) {
result += (result == "") ? coll.item(i).value : ("," + coll.item(i).value);
}
}
} else {
if (document.all.item(objName).checked) {
result = document.all.item(objName).value;
}
}
return result;
}
查资料得知firefox不支持document.all这种方法,看来也是个老问题了,网上的资料有很多,但大多都没有给出源码参考,仍然让新手摸不清头脑。我在这个问题上也浪费了一些时间。下面将重写上述代码,有此问题的朋友,可仔细比较一下。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| function GetCheckBoxList(objName) {
var result = "";
var coll = document.getElementsByName(objName);
if (!coll) return result;
if (coll.length) {
for (var i = 0; i < coll.length; i++) {
if (coll[i].checked) {
result += (result == "") ? coll[i].value : ("," + coll[i].value);
}
}
} else {
if (document.getElementsByName(objName).checked) {
result = document.getElementsByName(objName).value;
}
}
return result;
} |
function GetCheckBoxList(objName) {
var result = "";
var coll = document.getElementsByName(objName);
if (!coll) return result;
if (coll.length) {
for (var i = 0; i < coll.length; i++) {
if (coll[i].checked) {
result += (result == "") ? coll[i].value : ("," + coll[i].value);
}
}
} else {
if (document.getElementsByName(objName).checked) {
result = document.getElementsByName(objName).value;
}
}
return result;
}
在firefox中,获取表单元素属性要使用getElemntById或getElementsByName方法,前者是通过id号获取,后者是通过name名称获取。
注:新版的firefox已经开始接受document.all方法了,经测试属实!测试的代码如下。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| <html>
<body>
<input type="checkbox" id="txt" value="a" checked />
<input type="checkbox" id="txt" value="b" checked />
<input type="checkbox" id="txt" value="c" />
<input type="checkbox" id="txt" value="d" checked />
<SCRIPT LANGUAGE="JavaScript">
var result="";
var coll = document.all.txt;
for (var i = 0; i < coll.length; i++) {
if (coll[i].checked) {
result += (result == "") ? coll[i].value : ("," + coll[i].value);
}
}
alert(result);
</SCRIPT>
</body>
</html> |
<html>
<body>
<input type="checkbox" id="txt" value="a" checked />
<input type="checkbox" id="txt" value="b" checked />
<input type="checkbox" id="txt" value="c" />
<input type="checkbox" id="txt" value="d" checked />
<SCRIPT LANGUAGE="JavaScript">
var result="";
var coll = document.all.txt;
for (var i = 0; i < coll.length; i++) {
if (coll[i].checked) {
result += (result == "") ? coll[i].value : ("," + coll[i].value);
}
}
alert(result);
</SCRIPT>
</body>
</html>
ASP中一次查询循环体使用“Rs.MoveNext”可以移动指针,获取两条或更多的记录。PHP中是否有这种功能?答案是肯定的!
首先我们先看一下,PHP查询是如何工作的?常用的办法是通过mysql_fetch_array()函数,获取一条记录并把它赋值给$row数组变量,然后在循环体中就可以打印出记录内容了。如代码:
1
2
3
4
5
| $sql="SELECT * FROM `news` WHERE `class`='$id'";
$result = mysql_query($sql) or die(mysql_error());
while($row = mysql_fetch_array($result)){
echo $row['title'].'<br>';
} |
$sql="SELECT * FROM `news` WHERE `class`='$id'";
$result = mysql_query($sql) or die(mysql_error());
while($row = mysql_fetch_array($result)){
echo $row['title'].'<br>';
}
我们可以看到,下一次循环的时候是再一次通过mysql_fetch_array()获取新记录赋值给$row数组,所以我们可以尝试在循环体中使用它。如代码:
1
2
3
4
5
6
7
| $sql="SELECT * FROM `news` WHERE `class`='$id'";
$result = mysql_query($sql) or die(mysql_error());
while($row = mysql_fetch_array($result)){
echo $row['title'].'<br>';
$row = mysql_fetch_array($result); //获取下一条记录
echo $row['title'].'<br>';
} |
$sql="SELECT * FROM `news` WHERE `class`='$id'";
$result = mysql_query($sql) or die(mysql_error());
while($row = mysql_fetch_array($result)){
echo $row['title'].'<br>';
$row = mysql_fetch_array($result); //获取下一条记录
echo $row['title'].'<br>';
}
运行一下看看,达到和ASP中的“Rs.MoveNext”一样的效果了!
公司网站上使用的是ISAPI_Rewrite,不知是由于访问量太大或是别的什么原因,经常停止工作,需要重启IIS才能恢复。为解决这一问题,Google一番找到了IIRF(Ionic’s Isapi Rewrite Filter)这款软件,它开源、小巧、功能强大,完全可以替代ISAPI_Rewrite,我们可以通过它的官方网站http://iirf.codeplex.com/下载到它。
以下是我折腾好几个小时的安装使用过程:
服务器环境:win2003+IIS6
首先下载“2.1 latest stable”这个版本,无论是zip包还是msi安装文件,都会导致网站无法打开,经查资料说2.1版本有BUG,会影响网站运行,故下载“2.0.1.15”版本。
解开“2.0.1.15”压缩包,取出bin文件夹中的”IIRF.dll”,上传服务器c:\IIRF文件夹下 (IIRF为新建的文件夹,当然放在其它文件夹下也成)
对IIRF文件夹添加“IIS_WPG”(读取/运行,读取,写)权限,官网上说还要添加“NETWORK SERVICE”的相关权限,我测试没加,依然工作正常。
在IIS6中无论是全局还是在单个网站中,右键->属性->“ISAPI筛选器”中加载”IIRF.dll”,都可正常工作。具体加载方法和ISAPI_Rewrite一样,完后重启IIS,再点开看看,显示绿箭头即可。
在网站根目录下创建”IIRF.ini”文件,并对该文件添加“IIS_WPG”(读取/运行,读取)权限(否则不能工作,切记!)。具体该文件中的规则如果改写,原压缩包中给出非常详细的例子,参照一下。值得称赞的事,每次修改该ini文件都无需重启IIS。
此时不出意外,IIRF已经可以工作了。全局配置文件“IirfGlobal.ini”需和“IIRF.dll”放在一起,该文件中有三项设置,保证RewriteEngine为ON即可,其它无需更改。注:即使IirfGlobal.ini不存在,IIRF依然正常工作。
官方教程非常详细,源码中的实例也很多,而我这只是简单记录一下折腾过程,没有太多的价值。
欢迎交流!
闲话不多说,直接步骤:
1.越狱后进入Cydia设置成“开发者模式”,然后添加178源(http://apt.178.com)
2.安装sbsettings应用(bigboss源内),接着再依次安装python2.7、goagent-local和goagent-toggle(178源内)
3.用浏览器打开“ https://goagent.googlecode.com/files/CA.crt” 安装证书,若不能访问,可以将该证书下载并发送到邮箱中再安装
4.下载ifunbox或itools工具,打开手机系统的“/var/stash/applications/mobilesafari.app”路径,将“8087.pac”(文后提供下载)复制过去并覆盖源文件;再打开“/User/goagent-local”路径,将“proxy.ini”复制过去并覆盖源文件。注意:“proxy.ini”覆盖前要先打开并更改其中的“appid”为自己的。
5.打开系统中的设置->wifi(无线局域网)->HTTP代理->自动,在下面的URL中填写:“file://localhost/var/stash/Applications/MobileSafari.app/8087.pac ”(不包括引号哦)
6.在sbsettings中开启goagent的开关(不会操作请Google)
7.操作完成,打开客户端或浏览器测试facebook、twitter、youtube、G+,注:youtube可高清浏览。
8087.pac和proxy.ini点击下载
题外话:
虽然goagent作者已发布“org.goagent.local.ios_0.0.4-2_iphoneos-arm.deb ”,经测试不太好用,至少我没有使用成功,故依旧使用旧版“goagent-local 1.7.1”。这样也好,没有GUI节省内存。
原“goagent-local 1.7.1”中带的“8087.pac”文件内容已用“base64”编过码,没关系,使用PHP直接解码:
1
2
3
4
| <?php
$code='密文';
echo base64_decode($Code);
?> |
<?php
$code='密文';
echo base64_decode($Code);
?>
我提供下载的是修改过的,不想麻烦直接用即可。
事情是这样的:有一个页面要展示几张图片,这几张图片分别来自不同的地方,而且图片的路径随日期变化,但是图片之间并不是统一更新的。当访问者看到这个页面的时候,要根据当天的日期看到最新的图片内容。
操作如下:
将已知的图片路径和日期保存到文本文件中如:epic.txt 格式为:2012-12-10|http://wuhuaguo.lifeskillcn.com/wp-content/2012-12/10/gl.jpg 一行一条
页面主文件index.asp: 阅读全文…