2016-04-25 4 views
0

私が働いている学校のスペルミーウェブアプリを作成しています。私の考えは、生徒にボタンをクリックさせて、単語の音声をランダムに選択して再生することです。次に、彼らはフォームに単語を書き、訂正のために提出する。ランダムにオブジェクトのオーディオプロパティを選択して再生します

これは私のプロトタイプのコード

第一、言葉名やオーディオファイルを持つオブジェクトです。

var words = {} 
words.carrot = { 
audio : new Audio ('http://dictionary.cambridge.org/media/english-portuguese/uk_pron/u/ukc/ukcar/ukcarap002.mp3'), 
name : "CARROT" 
} 
words.ball = { 
audio : new Audio ('http://dictionary.cambridge.org/us/media/english/us_pron/b/bal/ball_/ball.mp3'), 
name : "BALL" 
} 

次に、オブジェクトのプロパティをランダムに選択する関数。ボタンをクリックすると呼び出されます。

var play = function(){ 

var list = Object.keys(words); 

var randomWord = list[Math.floor(Math.random()*list.length) ]; 
} 

これまでのところ、とても良いです。

私がしていないことは、結果の単語をオブジェクト構文に組み込むことです。

document.getElementById("demoparagraph").innerHTML = randomWord 

そして、それは完全に特性の一つを示しています は、テストのために、私は次のことを試してみました。

しかし、これは動作しません:words.randomWord.audio。それは "undefined"を返します。

words.carrot.audioはうまくいきます。あなたが動的にこれで可能である変数とオブジェクトのプロパティにアクセスするために探している

+1

あなたはjavascriptオブジェクトを誤解しています。ニンジンは財産であるので、words.carrotは機能します。ニンジンとボールの2つのプロパティを持つオブジェクトを作成しました。 2つのオプションを持つ配列ではありません。 – samuelmr

+1

ブラケット表記 'words [randomWord] .audio' – jcubic

+0

を使用する必要があります。ありがとう! – Evan

答えて

-2

words[randomWord].audio 

this fiddle example & this stackoverflow questionを参照してください。

+0

この例では、単語は配列ではありません。 – samuelmr

+0

@ samuelmrそれは必須ではありませんが、ブラケット記法を使用して動的にオブジェクトプロパティにアクセスできます。 – jamiestraw

関連する問題