您好,这是我创建表的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每个函数的编号不同。
答案 0 :(得分:0)
id_day
始终为32,直到调用onchange
时循环已完成并设置id_day++
32次。
一个快速解决方案是在{p>中将var
替换为let
for (let id_day = 1; id_day < 32; id_day++) {
但是重构代码以删除内联函数将使其更易于阅读,并且具有使范围更改更清晰的副作用