javascript无法找到该元素

时间:2013-09-11 12:24:00

标签: java javascript html jsp google-chrome

这是我的问题:

当我说getelementbyid(“table1”)时,它说“未捕获的TypeError:无法设置属性'innerHTML'为null

我通过下面的java脚本呈现动态表:

function mainProcessing()
{
        <% ProductController pc=new ProductController();%>

        var val = <%=pc.doTask()%>
        var jobj=JSON.stringify(val);
        document.write(jobj);
        alert(jobj);

         var obj=JSON.parse(jobj);
        alert("jobj");
        alert(obj.toString());
        var object = eval("(" + jobj+ ")");

        alert("this part is done");
        return object;
}
function drawtable()
{
    var JSONObj=mainProcessing();
    var tablecontents = "";
    for (var i = 0; i < 5; i ++)
   {
      tablecontents += "<tr>";
      tablecontents += "<td>" + i + "</td>";
      tablecontents += "<td>" + i * 100 + "</td>";
      tablecontents += "<td>" + i * 1000 + "</td>";
      tablecontents += "</tr>";
   }

 document.write(JSONObj.toString());       
    alert("just outside nested loop");
   document.getElementById("table1").innerHTML = tablecontents;
}

进行测试我已在表格中插入了randome值。

并且html部分是这样的:

<title>Indian Divine !!!</title>
</head>
<body onload="drawtable()">
<center>
<h1>my name is jobj</h1>
    <table id="table1">

    </table>
</center>
</body>
</html>

浏览器用户是Chrome。 IDE Eclips Juno

2 个答案:

答案 0 :(得分:3)

页面加载后您无法使用document.write。它取代了内容。如果您要查看其中的内容,请使用console.log(jobj);

其次,如果您计划将此代码用于IE,you can't set the tables innerHTML

第三,不要使用eval()来转换JSON。使用JSON.parse()

答案 1 :(得分:2)

document.write(mayur)将整个文档(包括表格)替换为mayur的值,因为您在加载文档后调用它。在您尝试访问ID为table1的元素时,它不再存在。

解决方案:请勿使用document.write

更多信息:MDN - document.wite