我有这个代码,我一直试图修复几个小时。
<script language="JavaScript">
<!--
function generate(){
var titels = new Array();
var i = 0;
for(i;i<9;i++){
var test = 'h1-0'+ i;
titels[i] = document.getElementById(test).textContent;
}
document.getElementById("uitkomst").value = titels[1];
}
-->
</script>
这给了我错误
TypeError: document.getElementById(...) is null
titels[i] = document.getElementById(test).textContent;
但是当我通过'h1-0'+ 5更改'h1-0'+ i时它确实有效并且我没有收到错误,所以我该如何解决这个问题呢?为什么Javascript在使用变量时会如此烦人?
答案 0 :(得分:1)
添加另一个变量:
var element;
并在循环中使用它来保持获取(或尝试获取)元素的结果:
for (i; i < 9; i++) {
element = document.getElementById('h1-0' + i);
if (element) {
titles[i] = element.textContent;
}
else {
console.log("Element " + i + " not found.");
}
}
然后检查控制台以查看缺少哪一个。
答案 1 :(得分:0)
有几种方法可以解决此问题 - 您可以测试缺少的对象并跳过该情况,或者您可以捕获抛出的异常并在异常处理程序中相应地执行操作。
以下是处理代码中缺少对象的方法:
function generate(){
var titels = [];
var i, item, test;
for (i = 0; i < 9; i++) {
test = 'h1-0'+ i;
item = document.getElementById(test);
if (item) {
titels[i] = item.textContent;
}
}
document.getElementById("uitkomst").value = titels[1];
}
如果,这确实是你的所有代码都在做,那么你不需要for
循环,因为你只使用数组中的[1]
项,你可以这样做:< / p>
function generate() {
var item = document.getElementById("h1-01");
if (item) {
document.getElementById("uitkomst").value = item.textContent;
}
}