2016-04-14 5 views
0

はここに私のコードランダムに選択された単語でhtmlにulを入力しようとしています。 JS

function wordPick() { 
     var words = ["Calgary", "Banff", "Airdrie", "Edmonton", "Drumheller"]; 

     //List of randomly-selected words from above 
     var result[]; 
     for(var i = 0; i<3; i++) {    
      var result[i] = words[Math.floor(Math.random() * words.length)]; 
     } 

     //Trying to populate the ul with words stored in result[] 
     var ul = document.getElementById("list");    
     for(var i = 0; i<result.length; i++) { 
      o = result[i]; 
      alert(o); 
      var li = document.createElement("li"); 
      li.appendChild(document.createTextNode(o.title)); 
      ul.appendChild(li); 
     } 
    } 

はここできるだけ早く私は移入を打つように私HTML

<button id="btnHello2" onclick="wordPick()">Populate!</button> 

<ul id="list"> 
    <li>Lady Gaga</li> 
    <li>Mickey Mouse</li> 
    <li>Toronto Pearson International Airport</li> 
</ul> 

だだ、既存のULの内容は、[]結果の内容で上書きされるはずです。しかし、それは動作しません。

誰でも助けてください。

答えて

0

あなたは<ul>の要素をクリアしたことがないので、リストにはちょうどいいul変数のインスタンス化した後、 forループul.innerHTML = "";を試してみてください<ul>に追加します。

0

あなたは、あなたの配列の正しい方法を扱う代わりに、このようにそれを行うにしていない。

var result = []; 
    for(var i = 0; i<3; i++) {    
     result[i] = words[Math.floor(Math.random() * words.length)]; 
    } 

構文エラーは、あなたがすべての配列

0

ファーストを宣言した方法であった、あなたがしていますあなたの配列に項目を間違って追加します。代わりに

result.push(words[Math.floor(Math.random() * words.length)]); 

を使用する必要があります。

for(i=0;i<3;i++){ 
    result.push(words[Math.floor(Math.random() * words.length)]); 
} 

あなたはまた、代わりに.appendChild().replaceChild()を使用してみてください可能性があり、そのように使用することができます:

myList.replaceChild(textNodeHere, myList.childNodes[index]); 
0

だからいくつかの問題があったとこれらの答えの全ての組み合わせが持っている例はここに私の作業例https://jsfiddle.net/a31hgkco/に入れました。

var result = []; 
    for(var i = 0; i<3; i++) {    
     result[i] = words[Math.floor(Math.random() * words.length)]; 
    } 

サムは、次の構文が間違っていた指摘したように。結果は配列として定義されておらず、ランダム値を設定するときに結果配列を再定義していました。

また前述のように、ul要素のinnerHTMLをクリアして既存のコンテンツを置き換える必要があります。

あなたがで<ul>タグ内のすべてを削除することができ、@Sam Bauwensが言ったことに伴い

0

を役に立てば幸い:変更後、

var myList = document.getElementById('list'); 
myList.innerHTML = ''; 

li.appendChild(document.createTextNode(o.title)); 

へ:

li.appendChild(document.createTextNode(o)); 

こちらはjsfiddleです。

0

1: '結果'の2番目の使用は、その前に 'var'宣言を持つべきではありません。

2:オブジェクト 'o'には 'title'というプロパティはありません。単に 'o'を使用します。

また、リストに追加しない場合は、damodarが示唆するように既存の「li」要素を削除する必要があります。

関連する問題