2010-12-03 15 views
2
var adList = new Array(); 
    adList[0]["img"] = 'http://www.gamer-source.com/image/media/screenshot/thumbnail/489.jpg';/* 
    adList[0]["h3"] = 'Product title2'; 
    adList[0]["button"]["link"] = '#link-url'; 
    adList[0]["button"]["text"] = 'Buy now'; 
    adList[0]["h3"] = 'asdfasdfasdf'; 

    adList[1]["img"] = 'http://www.gamer-source.com/image/media/screenshot/thumbnail/489.jpg'; 
    adList[1]["h3"] = 'Product title2'; 
    adList[1]["button"]["link"] = '#link-url'; 
    adList[1]["button"]["text"] = 'Buy now'; 
    adList[1]["h3"] = 'asdfasdfasdf'; 

エラーが発生しましたadList[0] is undefined、このような配列を定義できませんか?変数を割り当てる前に配列としてadList[0]を指定する必要がありますか?JS配列 - 配列の作成方法

答えて

4

問題は、値が割り当てられていないadList[0]を参照しようとしていることです。あなたがadList[0]['img']の値にアクセスしようとするので、これが起こる:

adList   -> Array 
adList[0]  -> undefined 
adList[0]["img"] -> Error, attempting to access property of undefined. 

は、配列を使って試してみて、代わりにそれを定義するためにリテラル表記をオブジェクト。

adList = [{ 
    img: 'http://www.gamer-source.com/image/media/screenshot/thumbnail/489.jpg', 
    h3: 'Product title 1', 
    button: { 
     text: 'Buy now', 
     url: '#link-url' 
    } 
}, 
{ 
    img: 'http://www.gamer-source.com/image/media/screenshot/thumbnail/489.jpg', 
    h3: 'Product title 2', 
    button: { 
     text: 'Buy now', 
     url: '#link-url' 
    } 
}]; 

それとも、単に個別adList[0]adList[1]を定義し、あなたの古いコードを使用することができます。

var adList = new Array(); 
adList[0] = {}; 
adList[1] = {}; 
adList[0]["img"] = 'http://www.gamer-source.com/image/media/screenshot/thumbnail/489.jpg'; 
... etc etc 
+1

私にそれを打つ:ここでは、JSFiddleは、私が使用しようとしていた配列/オブジェクトの組み合わせのライブ例を示しています。 http://jsfiddle.net/subhaze/A8vmX/ – subhaze

2

あなたは行う必要があります。

adList[0] = new Array(); 

同様の方法であなたがadList自体を作成する方法に。

1

あなたはそれを使って作業を始める前に、配列が何を含んでいるかを指定する必要があります。他の初期化されていない変数を使うのと同じです。

var adList = new Array(); 
sizeOfArray = 5; 
for (var i=0; i < sizeOfArray; i++) { 
    adList[i] = new Array(); 
} 

adList[0]["img"] = 'http://www.gamer-source.com/image/media/screenshot/thumbnail/489.jpg'; 

adListの内容を配列で0-4に初期化します。それから彼らの値を割り当てることができます。

adList[0]["img"]は実際には配列のインデックスを使用しません。配列はオブジェクトなので、プロパティを設定することができます。これはadList[0].imgと同じです。

2

また、オブジェクトの表記法を使用することができます。

adList = [ 
{ 
    "img": 'http://www.gamer-source.com/image/media/screenshot/thumbnail/489.jpg', 
    "h3": 'Product title2', 
    "button": {"link": '#link-url', 
       "text": 'Buy now'}, 
    "h3": 'asdfasdfasdf' 
}, { 
    "img": 'http://www.gamer-source.com/image/media/screenshot/thumbnail/489.jpg', 
    "h3": 'Product title2', 
    "button": {"link": '#link-url', 
       "text": 'Buy now'}, 
    "h3": 'asdfasdfasdf' 
}]; 
+0

偉大な心は似ていると思います。より大きな心はより速く考える:p。 –

1

あなたの問題は、そのadList[0]adList[1]です初期化されていない。これは配列であるadListとは何の関係もありません。

したがって、プロパティ値を割り当てる前に、adList[0] = new Object();は、あなたがしようとしているものに対して機能するはずです。

var adList = new Array(); 
    adList[0] = new Object(); 
    adList[0]["img"] = 'http://www.gamer-source.com/image/media/screenshot/thumbnail/489.jpg';/* 
    adList[0]["h3"] = 'Product title2'; 
    adList[0]["button"]["link"] = '#link-url'; 
    adList[0]["button"]["text"] = 'Buy now'; 
    adList[0]["h3"] = 'asdfasdfasdf'; 

    adList[1] = new Object(); 
    adList[1]["img"] = 'http://www.gamer-source.com/image/media/screenshot/thumbnail/489.jpg'; 
    adList[1]["h3"] = 'Product title2'; 
    adList[1]["button"]["link"] = '#link-url'; 
    adList[1]["button"]["text"] = 'Buy now'; 
    adList[1]["h3"] = 'asdfasdfasdf'; 
関連する問題