如何使用document.getElementById中的变量

How do I use variables in document.getElementById

本文关键字:变量 getElementById 何使用 document      更新时间:2024-01-22

我已经尝试修复了几个小时的代码。

<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"+I更改为"h1-0"+5时,它确实有效,而且我不会出现错误,那么我该如何修复它呢?为什么Javascript在使用变量时如此烦人?

添加另一个变量:

  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.");
  }
}

然后检查控制台,看看缺少哪一个。

有几种方法可以解决这个问题-您可以测试丢失的对象并跳过该情况,也可以捕获抛出的异常并在异常处理程序中相应地采取行动。

以下是如何处理代码中丢失的对象:

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]项,你可以这样做:

function generate() {
    var item = document.getElementById("h1-01");
    if (item) {
        document.getElementById("uitkomst").value = item.textContent;
    }
}