注意:这不是一个重复的问题。我删除了旧的问题并开始了新的问题。关于循环的问题也不是与其他人密切相关的问题。类似问题中提供的解决方案似乎并不适用于此,因为在我的示例中我使用的是集合。给出的解决方案不适用于该系列。
我正在使用typescript,webform,vb.net。我在打字稿中有一个名为Oral的课程。 Oral有一个名为TheType的属性。我正在尝试遍历类列表并为下拉列表创建.change事件。这是一些代码。
var oOral = new Oral("JDM", "0", "0", "0", "0");
oOrals.push(oOral);
oOral = new Oral("Organization", "0", "0", "0", "0");
oOrals.push(oOral);
这是我正在使用的循环。
for (var last of oOrals) {
for (var c = 1; c < 5; c++) {
$("[id$=ddl" + last.TheType + "_Assessor" + c + "]").change(function () {
ca3482.CalcRowAverage(last.TheType);
});
}
}
我遇到的问题是为循环创建了更改事件。我没有为JDM创建4个onchange事件,为Organization创建4个.onchange事件。问题出现在.change(function(){ca3482.CalcRowAverage(last.TheType)。最后一个。传递给它的类型。更改事件不是创建.change时所存在的属性的值,而是当它运行时它是属性的值...这总是最后一个属性值..在这种情况下组织。所以我的问题是如何将传递给.change事件的值变为创建.change事件时的值... 感谢
~~~~~~~~~~~
建议使用每种方法。当我修改代码以反映这一点时,打字稿给了我一个错误,我错过了一个;for each (var last in oOrals) {
for (var c = 1; c < 5; c++) {
$("[id$=ddl" + last.TheType + "_Assessor" + c + "]").change(function () {
ca3482.CalcRowAverage("JDM");
});
}
}
在做更多阅读时...看起来也许每个打字稿中的每一个都是通过使用for(var last in inOOrals)来完成的。所以不是使用它,而是使用它。现在开始如何获取last.TheType值。
当将of更改为in时,现在属性TheType似乎不再可用。下一个障碍。
~~~~
解决方案。 这是现在实际工作的代码。
for (const last of oOrals) {
for (var c = 1; c < 5; c++) {
$("[id$=ddl" + last.TheType + "_Assessor" + c + "]").change(function () {
ca3482.CalcRowAverage(last.TheType);
});
}
}
for(const last of oOrals)是诀窍。 const通过for保持本循环的本地范围,并且仍然允许我访问oOrals的属性