Sigo recibiendo Uncaught TypeError: Cannot set property "0" of undefined
, pero no puedo "por mi vida averiguar qué está mal!
var anchor = [];
getAnchors();
function getAnchors() {
$(".anchor").each(function(i) {
anchor[i] = $(this).offset().left;
});
}
Entonces, ¿qué está mal con este fragmento de código? He declarado anchor
como una matriz. He estado buscando errores tipográficos tontos por una hora ahora. El error radica en i
. Pero que es ¿el error?
Editar: Me enteré de lo que está mal.
Respuestas
1 para la respuesta № 1Puedes usar $.map
para construir matrices:
var anchor;
function getAnchors() {
anchor = $.map($(".anchor"), function(el) { return $(el).offset().left; });
}
1 para la respuesta № 2
Intenta devolver la matriz en su lugar? Me gusta esto:
function getAnchors() {
var allAnchors = [];
$(".anchor").each(function(i) {
allAnchors.push($(this).offset().left);
});
return allAnchors;
}
var anchor = getAnchors();
1 para la respuesta № 3
Debe crear la propiedad de objeto antes de asignarle un valor.
var anchor = [];
$(".anchor").each(function(i) {
anchor[i] = [{
pos: null,
id: null
}];
anchor[i]["pos"] = $(this).offset().left;
anchor[i]["id"] = $(this).attr("id");
});
luego haga la asignación y sobrescriba nula con sus valores.
1 para la respuesta № 4
Encontré la respuesta. Solo tuve que declarar anchor
en la función en su lugar.
getAnchors();
function getAnchors() {
var anchor = [];
$(".anchor").each(function(i) {
anchor[i] = $(this).offset().left;
});
// perhaps sort anchor
console.log(anchor);
}
Gracias por las respuestas sin embargo.
0 para la respuesta № 5
Puedes hacerlo:
var anchors = $(".anchor").map(function() {
return {
pos: $(this).offset().left,
id: this.id
}
}).get();