Несколько эффектов обмена в параметре передачи цикла - PullRequest
2 голосов
/ 22 мая 2019

Я пытаюсь сделать цикл for в javascript, где я помещаю функцию 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.

Есть ли у кого-нибудь идеи, как исправить код?

1 Ответ

1 голос
/ 22 мая 2019

Я предположил, что у вас есть 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">
...