Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
这句话有什么不对吗?(Javascript)_Javascript - Fatal编程技术网

这句话有什么不对吗?(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函数就不会被调用。因此,在这方面不应该有任何问题。无论如何,现在,我已经稍微更改了我的逻辑,这样我就不会在代码中使用上面提到的语句进行比较。到目前为止还不错。伙计们,我不确定这句话是否有任何问题,但稍微改变一下我的逻辑(为了避免使用有问题的语句)使事情顺利进行。我选择这个作为我的答案,因为即使该行出现错误,问题也可能出现在其他地方。