2017-03-22 23 views
0
var model = { 
    cats: [ 
    { 
     clickCount: 0, 
     name: "Panther", 
     imgUrl: "images/cat1.png"   
    }, 
    { 
     clickCount: 0, 
     name: "Tiger", 
     imgUrl: "images/cat2.png"   
    }, 
    { 
     clickCount: 0, 
     name: "Rocky", 
     imgUrl: "images/cat3.png"   
    }, 
    { 
     clickCount: 0, 
     name: "Marshal", 
     imgUrl: "images/cat4.png"   
    }, 
    { 
     clickCount: 0, 
     name: "Simpson", 
     imgUrl: "images/cat5.png"   
    }, 
    { 
     clickCount: 0, 
     name: "Kajol", 
     imgUrl: "images/cat6.png"   
    } 
    ] 
}; 
catObject = { 
       name: document.getElementById('text-name').value, 
       url: document.getElementById('text-url').value, 
       count: document.getElementById('text-count').value 
      }; 

モデルはオブジェクトの配列です。私はmodel.cats.push(catObject)を使って別のオブジェクトを追加しようとしています。 ここで、text-name、text-url、text-countは、フォーム内のテキストボックスのIDです。 希望の結果が得られません。私はcatObject.nameだけがmodel.catsにプッシュされ、catObject.urlとcatObject.countは追加されていないので、 'undefined'はmodel.cats.imgUrlとmodel.cats.clickCountの値です。 必要に応じてフルコードを追加できます。私は物事をしようとしました..誰かが私がここに何かを見逃しているかどうかを確認できますか?前もって感謝します。オブジェクトの配列にオブジェクトを追加するjavascript push()メソッド

+1

不足している行: 'cats.push(catObject);' – scunliffe

+0

あなたはcats' '内の既存のオブジェクトよりもcatObject''で異なる性質を命名しています。 'imgUrl'ではなく' url'です。 'clickCount'の代わりに' count'を使います。これらのプロパティ名を変更するだけです。 –

+0

マイクありがとう。それは魔法のように働いた。 – sumi

答えて

0

補正

modelは、オブジェクトの配列ではなくmodelないオブジェクトの配列である性質(すなわちcats)を含むオブジェクトです。

あなたはあなたの説明から

正しいなら、あなたがあなたがloopへを使用している場合があります

を間違っていた何model.cats.push(catObject);

を使用してcatscatObjectを成功裏にプッシュしていることは明らかですcats配列内の要素にアクセスし、の場合はundefined 0およびmodel.cats.imgUrlは、catObjectという名前のプロパティがurlcountという名前のため、プッシュした最後のオブジェクトのみです。 imgUrlおよびclickCountの代わりに)。したがって、プロパティ名をimgUrlclickCountに変更して問題を解決してください。

Corrected code here

関連する問題