我尝试使用Javascript循环访问ASP.NET列表框,但是当它遇到for循环中的lboxRight变量时,我得到一个空对象或未定义。这就是我所拥有的。
function save() {
var containsTypeA = false;
var containsTypeB = false;
var containsType = false;
var lboxRight = $get('<%=lboxRight.ClientID %>').value;
if (lboxRight != null) {
for (var i = 0; i < lboxRight.options.length; ++i) {
if (lboxRight.options[i].value == "Type A") {
containsTypeA = true;
}
if (lboxRight.options[i].value == "Type B") {
containsTybeB = true;
}
}
containsType = true;
}
}
当按下保存按钮调用此功能时,会有一个onclick事件映射到该按钮。我是否以正确的方式查看列表框并告诉我它是否具有此特定值?我的目的是让列表框包含Type A
作为值,然后当它循环遍历列表框时,如果它在列表中找到该值,它将为其他逻辑将该变量设置为true。 Visual Studio似乎抱怨for循环行,我在这里做错了什么?我使用完全相同的循环写在别处,它工作正常,所以我不明白为什么这个没有工作。
我写这篇文章有什么不妥吗?
答案 0 :(得分:0)
如果它抱怨for循环行中的某些内容为null或未定义,我会检查lboxRight.options是什么,因为你已经检查了lboxRight。
实际上,存在选项是没有意义的,因为lboxRight被设置为select而不是select的值。
尝试更改
var lboxRight = $get('<%=lboxRight.ClientID %>').value;
到
var lboxRight = $get('<%=lboxRight.ClientID %>');