这句话有什么不对吗?(Javascript)
我想知道下面的陈述是否有任何错误这句话有什么不对吗?(Javascript),javascript,Javascript,我想知道下面的陈述是否有任何错误 document.getElementById(monthId).options[document.getElementById(monthId).selectedIndex].value 我问这个问题是因为,有时它似乎工作正常,而在其他时间,它抛出了一个错误-对象不支持此属性或方法 顺便说一句,monthId是asp.net页面中gridview中下拉列表的clientID 谢谢 如果没有更多的代码作为上下文,很难进行计算。但是如果没有对这行代码进行健全性检
document.getElementById(monthId).options[document.getElementById(monthId).selectedIndex].value
我问这个问题是因为,有时它似乎工作正常,而在其他时间,它抛出了一个错误-对象不支持此属性或方法
顺便说一句,monthId是asp.net页面中gridview中下拉列表的clientID
谢谢 如果没有更多的代码作为上下文,很难进行计算。但是如果没有对这行代码进行健全性检查,当没有选择索引时,我希望它会失败,并出现索引越界类型异常。如果在下拉列表中没有选择值,
selectedIndex
将为-1 在使用getElementById
时,我倾向于进行错误检查。我想这就是你的问题所在
试试这个,然后在调试器中测试,但我会在调试器中添加一个警报
var elem = document.getElementById(monthId);
if (elem.options) {
options[document.getElementById(monthId).selectedIndex].value
} else {
alert("elem doesn't have an options property");
}
您可能不希望假定值
属性也存在,而是执行与我在这里所做的相同的基本操作
一旦您让它顺利运行,您知道将要发生什么,您就可以开始删除不需要的变量并返回到原始行,但是对于调试,在每行上有一个操作并使用单独的变量更简单,这样调试器就可以向您显示正在发生的事情
您可能想了解未定义
和空
之间的区别,关于这个主题有各种各样的页面,但这一页还不错
您可以通过在IE开发工具、Firebug、Opera dragonfly或Chrome开发工具中的代码中添加断点来调试问题,并检查您的值 或者您可以添加警报语句来检查您的值。我个人认为,当selectedIndex为-1时,代码会出错(如果未选择任何内容,则会出现selectedIndex=-1)。 自己检查一下:
alert(document.getElementById(monthId)); // Returns null if nothing is found
alert(document.getElementById(monthId).selectedIndex); // If the selectedIndex is below 0 it could cause your error
document.getElementById(monthId).options[document.getElementById(monthId).selectedIndex].value
当在下拉列表中没有选择任何内容时,它是否会引发错误?我想这对我来说很好。
。当找不到monthId或monthId不是选择框时,options
是不受支持的属性或方法。有什么理由找不到monthId吗?它是动态创建的吗?这段代码是否在dom准备就绪之前运行过?@MJB-不确定“在下拉列表中未选择任何内容”是什么意思。在下拉列表中不总是选择某些内容吗@罗布-是的。monthId是动态创建的。但是如果monthId不存在,javascript函数就不会被调用。因此,在这方面不应该有任何问题。无论如何,现在,我已经稍微更改了我的逻辑,这样我就不会在代码中使用上面提到的语句进行比较。到目前为止还不错。伙计们,我不确定这句话是否有任何问题,但稍微改变一下我的逻辑(为了避免使用有问题的语句)使事情顺利进行。我选择这个作为我的答案,因为即使该行出现错误,问题也可能出现在其他地方。