chr*_*ris 16 javascript arrays asp.net-mvc jquery split
我有以下代码:
var selected = $('#hiddenField').val().split(",");
...
if (selected.indexOf(id) > 0) {
... set value ...
}
Run Code Online (Sandbox Code Playgroud)
我正在动态创建一个CheckBoxList,并试图通过将所选ID放入隐藏字段来记住复选框的状态.
我收到一条错误,指出"对象不支持此属性或方法".我的假设是selected是一个数组,它应该支持indexOf.这是不正确的?
Nic*_*ver 23
有一个jQuery方法来克服缺乏indexOf()
,你可以使用.inArray()
:
var selected = $('#hiddenField').val().split(",");
if ($.inArray(id, selected) > -1) {
... set value ...
}
Run Code Online (Sandbox Code Playgroud)
jQuery.inArray()
存在就是出于这个原因...如果你已经包含了jQuery,则无需再次编写该函数.注意:这实际上会返回一个数字,就像indexOf()
那样.
Mat*_*att 21
根据您的错误消息,我假设这是来自Internet Explorer.
惊喜!Internet Explorer(包括版本8)不支持数组的indexOf.
if (!Array.prototype.indexOf)
{
Array.prototype.indexOf = function(elt /*, from*/)
{
var len = this.length >>> 0;
var from = Number(arguments[1]) || 0;
from = (from < 0)
? Math.ceil(from)
: Math.floor(from);
if (from < 0)
from += len;
for (; from < len; from++)
{
if (from in this &&
this[from] === elt)
return from;
}
return -1;
};
}
Run Code Online (Sandbox Code Playgroud)