我正在尝试在JavaScript中进行for循环,在该循环中,我为循环/列表中的每个元素放置了一个onChange函数。当onChange触发时,setValidation函数应使用正确的参数触发:
我现在一直在尝试以下代码
var allConditions = document.getElementsByClassName("condition-container");
for (let i = 0; i < allConditions.length; i++)
{
document.getElementById("PropertyPre" + i).onchange = function ()
{
setValidation(false, i);
}
};
function setValidation(firstTime, elementNumber)
{
console.log("This is number: " + elementNumber);
}
当我在HTML元素PropertyPre0
上进行更改时,实际输出如下:This is number 2
,但实际上应该返回This is number 0
。
有人知道如何修改代码吗?
答案 0 :(得分:1)
我假设您有3个div元素,其类别为“ condition-container”,id为“ PropertPre” + i(取决于您拥有多少个类别)
var allConditions = document.getElementsByClassName("condition-container");
for (let i = 0; i < allConditions.length; i++)
{
document.getElementById("PropertyPre" + i).onchange = function ()
{
return setValidation(false, i);
};
};
function setValidation(firstTime, elementNumber)
{
console.log("This is number: " + elementNumber);
}
<div class="condition-container">
<div class="condition-container">
<div class="condition-container">
<input id="PropertyPre0">
<input id="PropertyPre1">
<input id="PropertyPre2">