for循环传递参数中的多个onchange效果
Multiple onchange effects in a for loop passing parameter
我正在尝试在 javascript 中执行 for 循环,我在其中为 loop/list 中的每个元素放置了一个 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
,但实际上应该 return This is number 0
。
有没有人知道如何修复代码?
我假设你有 3 个 div 元素 class "condition-container" 和 id "PropertPre" + i(取决于你有多少 class)
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">
我正在尝试在 javascript 中执行 for 循环,我在其中为 loop/list 中的每个元素放置了一个 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
,但实际上应该 return This is number 0
。
有没有人知道如何修复代码?
我假设你有 3 个 div 元素 class "condition-container" 和 id "PropertPre" + i(取决于你有多少 class)
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">