私は続ける Uncaught TypeError: Cannot set property "0" of undefined
、しかし、私は私の人生のために何が間違っているかを理解することはできません!
var anchor = [];
getAnchors();
function getAnchors() {
$(".anchor").each(function(i) {
anchor[i] = $(this).offset().left;
});
}
それでは、このコードスニペットの何が問題になっていますか? 私は宣言しました anchor
配列として。 私は今、愚かなタイプミスを1時間チェックしています。 エラーは i
。しかし何 は エラー?
回答:
回答№1は1あなたは使うことができます $.map
配列を構築するには:
var anchor;
function getAnchors() {
anchor = $.map($(".anchor"), function(el) { return $(el).offset().left; });
}
回答№2の場合は1
代わりに配列を返しますか?このような:
function getAnchors() {
var allAnchors = [];
$(".anchor").each(function(i) {
allAnchors.push($(this).offset().left);
});
return allAnchors;
}
var anchor = getAnchors();
回答№3の場合は1
値を割り当てる前に、オブジェクトプロパティを作成する必要があります。
var anchor = [];
$(".anchor").each(function(i) {
anchor[i] = [{
pos: null,
id: null
}];
anchor[i]["pos"] = $(this).offset().left;
anchor[i]["id"] = $(this).attr("id");
});
次に割り当てを行い、nullを値で上書きします。
回答№4の場合は1
答えを見つけました。私はただ宣言しなければなりませんでした anchor
代わりに関数で。
getAnchors();
function getAnchors() {
var anchor = [];
$(".anchor").each(function(i) {
anchor[i] = $(this).offset().left;
});
// perhaps sort anchor
console.log(anchor);
}
返信いただきありがとうございます。
回答№5の場合は0
あなたはこれを行うことができます:
var anchors = $(".anchor").map(function() {
return {
pos: $(this).offset().left,
id: this.id
}
}).get();