var dszyjhs=eval("jhfj.dsjhs"+w+dsdm+".value");
这句话用来读取单元格中的数字,用于后面的合计。问题读10行数据都没有问题,空的就是空的,有数据的就会读到数据,问题出在第11行,读到的是undefined
这是11行的单元格
<INPUT TYPE=text size=3 onpropertychange='CountdsJh(100,17,11,11,1)' name="dsjhs111" maxlength="4" value="">
本来onpropertychange应该能够触发脚本的,也没反应了。
求教

解决方案 »

  1.   

    LZ你eval里W是变量吧,不就是木有定义额
      

  2.   

    var dz=eval("jhfj.dsjhs"+zydm+dsdm+"");
    for (i=0;i<dz.value.length;i++){
    这句话就报错了,'value.length'为空或不是对象
      

  3.   

    W循环中的变量
     for(var w=1;w<zyCount+1;w++){
    用    alert("jhfj.dsjhs"+w+dsdm+".value")
    取出来都是对的 jhfj.dsjhs111.value
      

  4.   

    这是完整的一段
    function CountdsJh(dsjhs,dsCount,zyCount,zydm,dsdm){
    var zyJh=0;

        for(var i=1;i<dsCount+1;i++){
           var dszyjhs=eval("jhfj.dsjhs"+zydm+i+".value");
       eval(zyJh=zyJh+dszyjhs*1);
    } var dz=eval("jhfj.dsjhs"+zydm+dsdm+"");
    for (i=0;i<dz.value.length;i++){
      var ch = dz.value.charAt(i);
      if (ch<"0" || ch>"9")  {
      alert("此处只能输入数值!");
      dz.value="";
      dz.focus();
             }
    }
    if (zyJh<dsjhs+1)
    {
    eval("document.getElementById('zyjhCount"+zydm+"').style.color='red'");
        var dszyxj=eval("zyjhCount"+zydm+".innerText="+zyJh);
    }
    else
    {
    alert("超过计划上限了,请重新输入。");
    eval("jhfj.dsjhs"+zydm+dsdm+".value=''");
    CountdsJh(dsjhs,dsCount,zyCount,zydm,dsdm)
    } if (zyJh==dsjhs)
    {
    eval("document.getElementById('zyjhCount"+zydm+"').style.color='black'");
    }
        var dsJh=0;
    var zjhs=0;
        for(var w=1;w<zyCount+1;w++){
           var dszyjhs=eval("jhfj.dsjhs"+w+dsdm+".value");
       if (eval("FjzyjhTable.rows["+w+"].cells["+dsCount+"+6].innerHTML")!="")
       {
       zjhs += parseFloat(document.getElementById ('FjzyjhTable').rows[w].cells[dsCount+6].innerHTML);
       }
       eval(dsJh=dsJh+dszyjhs*1);
    }
    var dszyxj=eval("ds"+dsdm+".innerText="+dsJh);
    eval("zCount.innerText="+zjhs);
        
    var tjzjzhs=0
        for (var w=1;w<zyCount+1 ;w++ )
        {
    tjzjzhs += parseFloat(document.getElementById ('FjzyjhTable').rows[w].cells[dsCount+6].innerHTML);
    }
        var zyzjhs=parseFloat(document.getElementById ('FjzyjhTable').rows[zyCount+1].cells[4].innerHTML);
    if (tjzjzhs==zyzjhs)
    {
       eval("document.getElementById('zCount').style.color='black'");
       jhfj.UPbutton.disabled=""
    }
    else
        {
       eval("document.getElementById('zCount').style.color='red'");
       jhfj.UPbutton.disabled="flase"
    }
    }
      

  5.   

    尽量少用 eval用:getElementById 获取dom 对象,
      

  6.   

    在这里用 getElementById 效果一样,在dsjhs111中填数值,就报上面的第八行'value.length'为空或不是对象。这里的name都是通过循环自动生成的,如果只有前10计算就是对的,多了这一行,就是错的,晕死了   <TD bgcolor=#FFFFFF align=center>
         <INPUT TYPE=text size=3 onpropertychange='CountdsJh(100,17,11,11,1)' name="dsjhs111" id="dsjhs111" maxlength="4" value="">
      </TD>
          
      <TD bgcolor=#FFFFFF align=center>
         <INPUT TYPE=text size=3 onpropertychange='CountdsJh(100,17,11,11,2)' name="dsjhs112" maxlength="4" value="">
      </TD>
          
      <TD bgcolor=#FFFFFF align=center>
         <INPUT TYPE=text size=3 onpropertychange='CountdsJh(100,17,11,11,3)' name="dsjhs113" maxlength="4" value="">
      </TD>
          
      <TD bgcolor=#FFFFFF align=center>
         <INPUT TYPE=text size=3 onpropertychange='CountdsJh(100,17,11,11,4)' name="dsjhs114" maxlength="4" value="">
      </TD>
          
      <TD bgcolor=#FFFFFF align=center>
         <INPUT TYPE=text size=3 onpropertychange='CountdsJh(100,17,11,11,5)' name="dsjhs115" maxlength="4" value="">
      </TD>
          
      <TD bgcolor=#FFFFFF align=center>
         <INPUT TYPE=text size=3 onpropertychange='CountdsJh(100,17,11,11,6)' name="dsjhs116" maxlength="4" value="">
      </TD>
          
      <TD bgcolor=#FFFFFF align=center>
         <INPUT TYPE=text size=3 onpropertychange='CountdsJh(100,17,11,11,7)' name="dsjhs117" maxlength="4" value="">
      </TD>
          
      <TD bgcolor=#FFFFFF align=center>
         <INPUT TYPE=text size=3 onpropertychange='CountdsJh(100,17,11,11,8)' name="dsjhs118" maxlength="4" value="">
      </TD>
          
      <TD bgcolor=#FFFFFF align=center>
         <INPUT TYPE=text size=3 onpropertychange='CountdsJh(100,17,11,11,9)' name="dsjhs119" maxlength="4" value="">
      </TD>
          
      <TD bgcolor=#FFFFFF align=center>
         <INPUT TYPE=text size=3 onpropertychange='CountdsJh(100,17,11,11,10)' name="dsjhs1110" maxlength="4" value="">
      </TD>