这是我的问题:
当我说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
答案 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