读书人

为何这段JS在aspx里不执行了?解决方

发布时间: 2012-01-05 22:36:54 作者: rapoo

为何这段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>

读书人网 >asp.net

热点推荐