开发者问题收集

Onchange 错误:未定义(设置‘值’)

2021-12-06
428

我请求帮助,我遇到了一个问题,因为我的控制台上出现了这个错误“Uncaught TypeError: Cannot set properties of undefined (setting 'value')”。我无法使用 document.getElementByID,因为我的 ID 会改变,它必须是类。有人能帮我看看这段代码需要改什么吗?

function information(ele){
 
for(var i=0; i<30; i++){
 var address1 = document.getElementsByClassName('test2')[i];

  if( ele.value == "test4"){
    address1.value = "test5";
  } else if (ele.value == "test6"){
    address1.value = "test7";
  } else if (ele.value == "test8"){
    address1.value = "test9";
  }
}
}
<div class="form grup information">
  <lable for="dates-full.names"> Names full</lable>
  <input name="dates-full.names" list="dates-full.names" type="text"
    class="form grup test1" onchange="information(this)">
  <datalist type="text" id="dates-full.names">
    <option value="test4">
    <option value="test6">
    <option value="test8">
  </datalist>
</div>


<div class="form grup test2">
  <lable for="power-full.adress"> Adress full</lable>
  <input id="test2" name="dates-full.adress" list="dates-full.adress" type="text"
  class="form grup test2">
  <datalist type="text" id="dates-full.adress">
    <option value="test5">
    <option value="test7">
    <option value="test9">
  </datalist>
</div>
2个回答

没有 30 个类名为 'test2' 的元素。在 for 循环中,迭代 30 个可能的元素,然后搜索类名为 'test2' 的第 n 个元素。但元素数量可能少于 30 个。迭代不存在的元素。

对此的一个可能解决方案是执行 foreach 而不是 for。迭代所有元素。

尝试以下操作: 在 JavaScript 中对数组进行 For-each

Val
2021-12-06

尝试一下:

function information(ele){
  var address1 = document.getElementsByClassName('test2');
  for(var i=0; i<address1.length; i++){
    if( ele.value == "test4"){
      address1[i].value = "test5";
    } else if (ele.value == "test6"){
      address1[i].value = "test7";
    } else if (ele.value == "test8"){
      address1[i].value = "test9";
    }
  }
}
davood Sandoghsaz
2021-12-07