javascript - ejemplo - jquery split() e indexOf da como resultado "El objeto no admite esta propiedad o método"
split split javascript (3)
Hay un método jQuery para superar la falta de indexOf()
, puedes usar .inArray()
lugar:
var selected = $(''#hiddenField'').val().split(",");
if ($.inArray(id, selected) > -1) {
... set value ...
}
jQuery.inArray()
existe solo por esta razón ... si ya está incluyendo jQuery, no es necesario volver a escribir la función. Nota: Esto realmente devuelve un número, como lo indexOf()
.
Tengo el siguiente código:
var selected = $(''#hiddenField'').val().split(",");
...
if (selected.indexOf(id) > 0) {
... set value ...
}
Estoy creando dinámicamente un CheckBoxList e intentando recordar el estado de las casillas de verificación colocando las ID seleccionadas en el campo oculto.
Recibo un error que indica que "el objeto no admite esta propiedad o método". Mi suposición es que seleccionado es una matriz, que debería ser compatible con indexOf. ¿Eso es incorrecto?
Según su mensaje de error, asumo que esto proviene de Internet Explorer.
¡Sorpresa! Internet Explorer (incluida la versión 8) no admite indexOf para arreglos.
Aquí está la implementación de Firefox que puedes usar:
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;
};
}
[].indexOf || (Array.prototype.indexOf = function(v,n){
n = (n==null)?0:n; var m = this.length;
for(var i = n; i < m; i++)
if(this[i] == v)
return i;
return -1;
});