我做的一个页面,有公式计算,被计算的值是用innerHTML方法放到TD里,同时它的值要放到hidden域里。
我做的javascript方法放进去没有问题,在取值时报没有这个对象
alert(document.getElementById(gg_id+"3").value);//这个能取到hidden里的值document.getElementById(gg_id+"3").value = eval(document.getElementById(gg_id+"4").value)+eval(document.getElementById(gg_id+"5").value);

document.getElementById(gg_id+"3t").innerHTML = eval(document.getElementById(gg_id+"4").value)+eval(document.getElementById(gg_id+"5").value);alert(document.getElementById(gg_id+"3"));//得到的是一个null
为什么会出现这样的情况?怎么解决这个问题

解决方案 »

  1.   

    貌似正常 <body>
    <input type="hidden" id="kk3" value="3"/>
    <input type="hidden" id="kk4" value="4"/>
    <input type="hidden" id="kk5" value="5"/>
    <div id="kk3t" style=""></div>
    <script type="text/javascript">
    <!--
    var gg_id = "kk"
    alert(document.getElementById(gg_id+"3").value);//这个能取到hidden里的值document.getElementById(gg_id+"3").value = eval(document.getElementById(gg_id+"4").value)+eval(document.getElementById(gg_id+"5").value);document.getElementById(gg_id+"3t").innerHTML = eval(document.getElementById(gg_id+"4").value)+eval(document.getElementById(gg_id+"5").value);alert(document.getElementById(gg_id+"3"));//
    alert(document.getElementById(gg_id+"3").value);//这个能取到hidden里的值//-->
    </script>
      

  2.   

    function jsgs(obj){
      var id = obj.name;
      if(isNaN(document.getElementById(id).value)){
         alert("内容必须为数字!");
         document.getElementById(id).value=0;
         document.getElementById(id).focus();
      }
      var num = id.substr(id.indexOf("c")+1,id.length);
      var gg_id = id.substr(0,id.indexOf("c")+1);  if(num==5){
      alert(document.getElementById(gg_id+"3").value);
      document.getElementById(gg_id+"3").value = eval(document.getElementById(gg_id+"4").value)+eval(document.getElementById(gg_id+"5").value);

      document.getElementById(gg_id+"3t").innerHTML = eval(document.getElementById(gg_id+"4").value)+eval(document.getElementById(gg_id+"5").value);
      alert(document.getElementById(gg_id+"3"));
    }<td class="STYLE2" bgcolor="#FFFFFF" id="r1c3t"><input type="hidden" name="r1c3" id="r1c3" value="0"/></td>
                   
           
               
    <td class="STYLE2" bgcolor="#FFFFFF"><input type="text" name="r1c4" id="r1c4" size="10" value="0" onblur="jsgs(this)"></td>
                     
           
               
    <td class="STYLE2" bgcolor="#FFFFFF"><input type="text" name="r1c5" id="r1c5" size="10" value="0" onblur="jsgs(this)"></td>
    这个代码
      

  3.   

    document.getElementById(gg_id+"3t").innerHTML = eval(document.getElementById(gg_id+"4").value)+eval(document.getElementById(gg_id+"5").value);
    上面这句代码,把你ID以“3t”结尾的td的内容重写了。 所以document.getElementById(gg_id+"3")就没有了。
      

  4.   

    楼主用的浏览器是什么?IE还是FF或其他。有的浏览器对隐藏域有可能无法获取或设置或者获取方式不同!
      

  5.   

    4楼说的对,hidden换成text然后把innerHTML去掉完全好用,加上innerHTML就会出这样问题
    但是我不想用text显示被计算的值,再我上面的js里有什么方法可以实现?