Javascript jquerymultiselect插件返回空长度(应该是0?)

Javascript jquerymultiselect插件返回空长度(应该是0?),javascript,jquery,arrays,null,Javascript,Jquery,Arrays,Null,使用jquerymultiselect插件并需要检查是否已进行了任何选择,用户可以在不选择任何内容的情况下打开和关闭选择框。这个插件有一个close方法,我使用它来获取所选/选中选项的数组: var checkedVals = []; checkedVals = $('#'+which).val(); // Get Array of checked options alert(checkedVals.length); // See if it's empty 当选择/选中某个选项

使用jquerymultiselect插件并需要检查是否已进行了任何选择,用户可以在不选择任何内容的情况下打开和关闭选择框。这个插件有一个close方法,我使用它来获取所选/选中选项的数组:

var checkedVals = [];
checkedVals = $('#'+which).val();   // Get Array of checked options
alert(checkedVals.length);      // See if it's empty
当选择/选中某个选项时,它工作正常,因此我知道我正在返回值,但当未选择任何选项时,Firebug会抛出一个错误,指出checkedVals为null。空数组应为0。。。不为空。请。。。我们不要讨论试图捕获null

感谢您的帮助

对于元素,.val方法返回一个包含每个选定选项的数组;如果未选择任何选项,则返回null

因此.val的行为符合预期,并且您的代码是正确的,但您必须添加一个检查,以确定.val返回null的可能性是否完全合理。

来自:

对于元素,.val方法返回一个包含每个选定选项的数组;如果未选择任何选项,则返回null


因此.val的行为符合预期,并且您的代码是正确的,只是您必须添加一个检查,检查.val返回null的可能性是否完全合理。

这样编写,您将始终拥有一个数组

var checkedVals = $('#'+which).val() || [];
alert(checkedVals.length);      

它会将checkedVals设置为.val值,如果为null,则设置为空数组。

这样写,您将始终拥有一个数组

var checkedVals = $('#'+which).val() || [];
alert(checkedVals.length);      

它会将checkedVals设置为.val值,如果为null false,则设置为空数组。

完全有可能$+which.val返回未定义,这意味着checkedVals不是空数组,并导致您遇到错误。$+which.val完全有可能返回未定义,这意味着checkedVals不是空数组,并导致您遇到的错误。好的。。。谢谢当我只检查数组本身时,它实际上返回未定义。这就是我尝试.length方法的原因。我将尝试捕获null,null,或者val返回的任何内容。好的。。。谢谢当我只检查数组本身时,它实际上返回未定义。这就是我尝试.length方法的原因。我将尝试捕获null、null或val返回的任何内容。