0

データワードが呼び出されたときに、音と画像を表示して再生したい。私は多くの異なる方法を試しましたが、それを理解することはできません。

これが1つの方法です...

for(i = 0; i < ul.children.length; ++i){

listOfWords[ul.children[i].getAttribute("data-word")] = ul.children[i].getAttribute("data-pic", "data audio");

}
 console.log(listOfWords);

私も試してみました...

for(i = 0; i < ul.children.length; ++i){

listOfWords[ul.children[i].getAttribute("data-word")] = ul.children[i].getAttribute("data-pic");
listOfWords[ul.children[i].getAttribute("data-word")] = ul.children[i].getAttribute("data-audio");


}
console.log(listOfWords);

しかし、そのような幸運はありません。

2 番目の方法は下部を処理しますが、上部は処理しません。データ ワードが呼び出されるときに、data-audio と data-pic の両方が必要です。

誰でも助けることができますか?

HTML...

<ul style="display:none;" id="wordlist">
  <li data-word="mum" data-audio="http://www.wav-sounds.com/cartoon/daffyduck1.wav" data-pic="http://pixabay.com/static/uploads/photo/2012/04/13/00/06/head-31117_640.png"></li>
  <li data-word="cat" data-audio="http://www.wav-sounds.com/cartoon/porkypig1.wav" data-pic="http://pixabay.com/static/uploads/photo/2012/05/03/23/13/cat-46676_640.png"></li>
  <li data-word="dog" data-audio="http://www.wav-sounds.com/cartoon/porkypig1.wav" data-pic="http://pixabay.com/static/uploads/photo/2012/05/02/21/14/gray-46364_640.png"></li>
  <li data-word="bug" data-audio="http://www.wav-sounds.com/cartoon/porkypig1.wav" data-pic="http://pixabay.com/static/uploads/photo/2012/04/16/12/17/black-35741_640.png"></li>
  <li data-word="log" data-audio="http://www.wav-sounds.com/cartoon/daffyduck1.wav" data-pic="http://pixabay.com/static/uploads/photo/2012/04/13/11/18/fire-31929_640.png"></li>
  <li data-word="dad" data-audio="http://www.wav-sounds.com/cartoon/daffyduck1.wav" data-pic="http://pixabay.com/static/uploads/photo/2012/04/13/00/05/old-31110_640.png"></li>

4

2 に答える 2

2

このようなもの:

for(i = 0; i < ul.children.length; ++i){
   listOfWords[ul.children[i].getAttribute("data-word")] = {
         "pic" : ul.children[i].getAttribute("data-pic"),
         "audio" : ul.children[i].getAttribute("data-audio")
   };
}

次に、オブジェクト内の特定のアイテムに対して次のlistOfWordsことができます。

var currentWord = "cat"; // set current word key somehow, then:
console.log(listOfWords[currentWord].pic);
console.log(listOfWords[currentWord].audio);

jQuery の場合:

var listOfWords = {};
$("#wordlist li").each(function() {
    var $item = $(this);
    listOfWords[ $item.attr("data-word") ] = {
        pic : $item.attr("data-pic"),
        audio : $item.attr("data-audio")
    };
});
于 2012-07-26T14:21:26.000 に答える
0

jQuery を使用.each()すると、リスト項目を反復処理し、.data()データ属性値を取得できます。

var listOfWords = [];
$("#wordlist li").each(function(index, item) {
  // where liData is { word: "a", audio: "b", pic: "c" }
  var liData = $(item).data();
  listOfWords[liData.word] = liData;

  console.log("word: " + liData.word + ", audio: " + liData.audio + ", pic: " + liData.pic);
});
于 2012-07-26T14:22:41.117 に答える