为何这段JS在aspx里不执行了??
aaa <input type= "checkbox " name= "checkbox " value= "aaa " onclick= "check() ">
bbb <input type= "checkbox " name= "checkbox " value= "bbb " onclick= "check() ">
ccc <input type= "checkbox " name= "checkbox " value= "ccc " onclick= "check() ">
ddd <input type= "checkbox " name= "checkbox " value= "ddd " onclick= "check() ">
<input type= "text " name= "text1 " readonly>
<script language= "JavaScript ">
function check()
{
var a = document.getElementsByName( "checkbox ");
var b = document.getElementsByName( "checkbox ");
var s=0;
for (var i=0; i <a.length; i++)
//if(a[i].value!== " ") s=s+parseInt(a[i].value);
if(a[i].checked) s=s+(b[i].value);
document.form1.text1.value=s;
}
</script>
这段代码放在单独的html页面里可以执行,但放到 aspx页面里却不执行了.怎么回事????
[解决办法]
估计是你的checkbox是服务器端控件,生成html后name属性变了,你可以查看生成后的代码是什么
改成这样:
function check()
{
var objs = document.getElementsByTagName( "input ");
for (var i = 0; i < objs.length; i ++)
{
if(objs[i].type == "checkbox ")
{
if (objs[i].id.indexOf( "checkbox ") != -1)
{
if(objs[i].checked) s=s+(objs[i].value);
}
}
}
document.form1.text1.value=s;
}
------解决方案--------------------
把这段代码拷到你的ASPX页看看效果
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN " "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd ">
<html xmlns= "http://www.w3.org/1999/xhtml " >
<head >
<title> Untitled Page </title>
<script language= "JavaScript ">
function check()
{
var a = document.getElementsByName( "checkbox ");
var b = document.getElementsByName( "checkbox ");
var s=0;
for (var i=0; i <a.length; i++)
//if(a[i].value!== " ") s=s+parseInt(a[i].value);
if(a[i].checked) s=s+(b[i].value);
document.form1.text1.value=s;
}
</script>
</head>
<body>
<form id= "form1 " runat= "server ">
aaa <input type= "checkbox " name= "checkbox " value= "aaa " onclick= "check() ">
bbb <input type= "checkbox " name= "checkbox " value= "bbb " onclick= "check() ">
ccc <input type= "checkbox " name= "checkbox " value= "ccc " onclick= "check() ">
ddd <input type= "checkbox " name= "checkbox " value= "ddd " onclick= "check() ">
<input type= "text " name= "text1 " readonly>
</form>
</body>
</html>
[解决办法]
再试试这样:
<input type= "text " id= "text1 " name= "text1 " readonly />
<script language= "JavaScript ">
function check()
{
var a = document.getElementsByName( "checkbox ");
var b = document.getElementsByName( "checkbox ");
var s=0;
for (var i=0; i <a.length; i++)
if(a[i].checked) s=s+(b[i].value);
// 记的给text1加上ID属性
document.getElementById( "text1 ")value=s;
}
[解决办法]
楼主的几处有问题 ,
1. document.form1.text1.value=s
这句有问题 应该是document.all.form1.text1.value=s
要不就是 document.forms[0].text1.value=s
2.document.getElementsByName 最好是 document.getElementsByTagName,不过这个倒没有太大关系
主要是第1点,这个脚本即使在html页面都无法执行的。
[解决办法]
看看你生成的客户端代码里面是否还有
name是否还是 checkbox
如果有
document.getElementsByName( "checkbox ");就没有问题
[解决办法]
另外
if(a[i].checked) s=s+(b[i].value);
应该写成
s = s + a[i].value + ", ";
否则不好得到值
<script type= "text/javascript ">
function check()
{
var a = document.getElementsByName( "checkbox ");
var s= " ";
for(i=0;i <a.length;i++)
{
if(a[i].checked) s = s + a[i].value + ", ";
}
document.Form1.text1.value=s;
}
</script>