【问题标题】:Onchange Error: undefined (setting 'value')Onchange 错误:未定义(设置“值”)
【发布时间】:2022-01-12 00:37:13
【问题描述】:

我正在寻求帮助,我遇到了一个问题,因为我在控制台上收到此错误“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>

【问题讨论】:

  • 你假设你有 30 个元素的类 test2,但你没有。此外,您正在调用类选择器并为循环的每次迭代检索所有这些元素。

标签: javascript html undefined onchange html-datalist


【解决方案1】:

没有 30 个类名为 'test2' 的元素。在您的 for 循环中,您迭代了 30 多个可能的元素,然后您搜索类名称为 'test2' 的第 n 个元素。然而,可能只有不到 30 个元素。迭代不存在的元素。

一个可能的解决方案是使用 foreach 而不是 for。遍历所有元素。

试试这些: For-each over an array in JavaScript

【讨论】:

  • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
  • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
【解决方案2】:

试试这个:

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

【讨论】:

    猜你喜欢
    • 2022-08-05
    • 2022-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-23
    • 1970-01-01
    • 2022-07-26
    • 2012-09-19
    相关资源
    最近更新 更多