如何在document.getElementById中使用变量

时间:2013-11-30 18:25:07

标签: javascript variables getelementbyid

我有这个代码,我一直试图修复几个小时。

<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在使用变量时会如此烦人?

2 个答案:

答案 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;
    }

}