具有onchange的循环的内部函数中的计数器变量

时间:2018-08-30 14:29:45

标签: javascript php function loops

您好,这是我创建表的for循环。该表内部有不同的功能。

for (var id_day = 1; id_day < 32; id_day++)
{
    var tr = document.createElement("tr");  

    for (var i = 0; i < 3; i++)
    {
        var td = document.createElement("td");

        if (i == 0)
            td.innerHTML = id_day;
        if (i == 1)
        {
            var element = document.createElement("input");
            element.type = "text";
            element.id = "quantity_delivered_" + id_day;
            element.name = "quantity_delivered";
            element.value = "0.00";
            element.onchange = function(){update_input_detail(this.id, this.value, id_day, id_ddt, id_product);};
            td.appendChild(element);
        }
        if (i == 2)
        {
            var element = document.createElement("input");
            element.type = "text";
            element.id = "quantity_returned_" + id_day;
            element.name = "quantity_returned";
            element.value = "0.00";
            element.onchange = function(){update_input_detail(this.id, this.value, id_day, id_ddt, id_product);};
            td.appendChild(element);
        }

        tr.appendChild(td);
    }

    tbody.appendChild(tr);
}

.onchange函数内部id_day始终是最后一个索引32,但我需要id_day每个函数的编号不同。

1 个答案:

答案 0 :(得分:0)

id_day始终为32,直到调用onchange时循环已完成并设置id_day++ 32次。

一个快速解决方案是在{p>中将var替换为let

for (let id_day = 1; id_day < 32; id_day++) {

但是重构代码以删除内联函数将使其更易于阅读,并且具有使范围更改更清晰的副作用

相关问题