a = <%=id%>;
for(i = 0;i < inputs.length;i++) {
input = inputs[i];
for(j = 0;j < 10;j++) {
tname = "t"+j;
if(input.name == tname)
for(k = 0;k < tts[j].length;k++) 
if(input.value == tts[j][k]) {
input.checked = true;
input.disabled = false;
b = ds[j];
c = tts[j][k];
input.onclick = function() {openwin(a,b,c)};
}
}
}
function openwin(newsid,udate,unum) {
window.location="select.asp?newsid="+newsid+"&udate="+udate+"&unum="+unum;
}
上面就是根据一些数组的数据,来设置一些复选框是否可用,是否被点击后可以链接到另一个页面的
代码如上,问题是页面出来后,每个可以点击后链接到另一页面的复选框,链接的页面的URL都是一样的,这是为什么呢?

解决方案 »

  1.   

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
    <HEAD>
    <TITLE> New Document </TITLE>
    <META NAME="Generator" CONTENT="EditPlus">
    <META NAME="Author" CONTENT="">
    <META NAME="Keywords" CONTENT="">
    <META NAME="Description" CONTENT=""></HEAD><BODY>
    <input type='button' name='C2' value ='0'>
    <input type='button' name='C2' value ='1'>
    <input type='button' name='C2' value ='2'>
    </BODY>
    <script language="javascript">function gettd()
    { var a=document.getElementsByTagName("input"); for(var i=0;i<a.length;i++)
    {
    a[i].onclick=(function (i){return function(){updownmouse(i);}})(i)
    }
    }
    function updownmouse(i)
    {
    alert(i);//这里输出的i总为500;
    }
    //gettd();function gettdd()
    { var aa=new Array()
    aa[0]='1'
    aa[1]='2'
    aa[2]='3'
    var bb=new Array()
    bb[0]='bb1'
    bb[1]='bb2'
    bb[2]='bb3'
    var a=document.getElementsByTagName("input"); for(var j=0;j<a.length;j++)
    {
    (function (j){
    for(var i=0;i<a.length;i++)
    {
    c=aa[j]
    d=bb[i]
    //alert(c)
    //alert(d)
    a[i].onclick=(function (i,c,d){return function(){winopen(c,d);}})(i,c,d)
    }
    })(j)
    }
    }function gettddmm()
    { var aa=new Array()
    aa[0]='1'
    aa[1]='2'
    aa[2]='3'
    var bb=new Array()
    bb[0]='bb1'
    bb[1]='bb2'
    bb[2]='bb3'
    var a=document.getElementsByTagName("input"); for(var j=0;j<a.length;j++)
    { for(var i=0;i<a.length;i++)
    {
    c=aa[j]
    d=bb[i]
    //alert(c)
    //alert(d)
    a[i].onclick=(function (i,c,d){return function(){winopen(c,d);}})(i,c,d)
    } }
    }function winopen(c,d)
    {
    alert(c+"="+d);//这里输出的i总为500;
    }
    //gettdd();
    gettddmm();
    </script>
    </HTML>
    查查闭包的用法http://bbs.51js.com/viewthread.php?tid=61767&highlight=%2B%D4%C2%D3%B0
      

  2.   

    用new Function 也能解决
      

  3.   

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
    <HEAD>
    <TITLE> New Document </TITLE>
    <META NAME="Generator" CONTENT="EditPlus">
    <META NAME="Author" CONTENT="">
    <META NAME="Keywords" CONTENT="">
    <META NAME="Description" CONTENT="">
    </HEAD><BODY><div id="result"><li>AAAAA</li>
    <li>BBBbb</li></div>
    <div id="a">test</div> <table><tr>
    <td><input type="checkbox" name="checks" onclick="changeValues(this)"><input type="hidden" name="hids" value="0"></td>
    <td><input type="text" name="t" value="aaaaa"></td>
    </tr>
    <tr>
    <td><input type="checkbox" name="checks" onclick="changeValues(this)"><input type="hidden" name="his" value="0"></td>
    <td><input type="text" name="t" value="bbb"></td>
    </tr>
    </table>
    <input type="button" name="aa" value="asdf" >
    <input type="button" name="aa" value="asdf" >
    <input type="button" name="aa" value="asdf" >
    <input type="button" name="aa" value="asdf" >
    <tr>===================================
    <input type="button" name="bb" value="asdf" >
    <input type="button" name="bb" value="asdf" >
    <input type="button" name="bb" value="asdf" >
    <input type="button" name="bb" value="asdf" >
    </BODY>
    <script language="javascript">function a(b,c){
    alert(b+c)
    }
    function b(){
    var bb=document.getElementsByName("aa")
    for(var i=0;i<4;i++){
       bb[i].onclick=function() { a("aa",i)}
    }
    }
    b()
    function c(){
    var dd=document.getElementsByName("bb")
    for(var ii=0;ii<4;ii++){
       dd[ii].onclick=(function(ii) { return function (){a("bb",ii)}})(ii)
    }
    }
    c()
    </script>
    </HTML>
      

  4.   

    for(var i = 0;i<5;i++)
    {
       var a = document.createElement("a");
       a.id = i;
       a.onclick = function () {
           alert(this.id);//这样就不会都是5了
       }
    }
      

  5.   

    function a(b,c){
    alert(b+c)
    }function c(){
    var dd=document.getElementsByName("bb")
    for(var ii=0;ii<4;ii++){
    dd[ii].onclick = new Function("a('bb','"+ii+"')");
    }
    }
    c()
      

  6.   

    谢谢~~继续上面的问题,代码修改一下1.如何解决firefox不能显示分数问题
    2.重复点击一个否  会重复扣分,希望能判断重复不扣分
    <!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>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <script src="js/prototype.js" type="text/javascript"></script> 
    <title>无标题文档</title>
    </head><body>
    <form id="form1" name="form1" method="post" action="">
      <div id="A1">
      ABC:是<input type="radio" name="a" value="T" />
      否&nbsp; <input type="radio" name="a" value="F" />
        是 <input type="radio" name="b" value="T" /> 否&nbsp; <input type="radio" name="b" value="F" />
        是 <input type="radio" name="c" value="T" />
      否 <input type="radio" name="c" value="F" />
      </div>
        <div id="A2">DEF: 是<input type="radio" name="d" value="T" /> 
     否&nbsp; <input type="radio" name="d" value="F" /> 
       是 <input type="radio" name="e" value="T" /> 
     否&nbsp; <input type="radio" name="e" value="F" />
        是 <input type="radio" name="f" value="T" />否&nbsp; 
      <input type="radio" name="f" value="F" />
      </div>
      <div id="A3">GHI: 是<input type="radio" name="g" value="T" /> 
     否&nbsp;&nbsp; <input type="radio" name="g" value="F" />
        是 <input type="radio" name="h" value="T" />&nbsp; 否 <input type="radio" name="h" value="F" /> 
       是 <input type="radio" name="i" value="T" /> 
     否 <input type="radio" name="i" value="F" />
      </div>
      <br/>
    ABC:<span id="score1">40</span> DEF:<span id="score2">10</span> GHI:<span id="score3">40</span>
    </form>
    </body>
    </html>
    <script>
    function on_click(k){
     return function(){
     var score =$("score"+k).innerText;
     score=score<0?0:score-eval("num"+k);
     $("score"+k).innerText=score;
     }
    } var num1=(new Number(40/39)).toFixed(2);  //每项分数 文件化控制40分共39个
     var num2=1;   //每项分数 操作者培训10分共10个
     var num3=(new Number(40/31)).toFixed(2); //每项分数 现场审核40分共31个for(var i=1;i<4;i++){  
       var score=$("score"+i).innerText;
       var div=$("A"+i)
       var children =div.getElementsByTagName("INPUT");
       for(var j=0;j<children.length;j++){
         if(children[j].type=="radio"&&children[j].value=="F"){   
        children[j].onclick=on_click(i);
       }
      }
    }
    </script>
      

  7.   

    用evaleval("input.onclick = function() {openwin("+a+","+b+","+c+")};");似乎是onclick是在触发时才会去找a,b,c,的变量,但是这时已经跳出了,所以传的参数都是最后的
      

  8.   

    <html>
    <script language=javascript>
    function test()
    {
    alert('')
    for(var i=0;i<10;i++)
    {
    var tr = document.getElementById("tb").insertRow();
    var td = tr.insertCell();
    td.innerHTML = "aa"+i+"hang";
    tr.onclick = (function (i,td){return function(){myfunc(i,td);}})(i,td)
    }
    }function myfunc(str,td)
    {
    alert(str+":"+td.innerHTML);
    }</script>
    <body>
    <input type=button value=test onclick="test()"><br>
    <table id=tb width=200 border=1>
    <tr><td bgcolor=yellow>1111111111</td></tr>
    </table>
    </body>
    </html>查查闭包