2017-07-06 22 views
0

こんにちは私は、ボタンを押すだけで順序付けられていないリスト内のランダムなリスト項目を選択する単純なjavascript関数を持っています。それはうまくいきます、コンソールは、ボタンがクリックされたときにランダムなリスト項目を吐き出しますが、HTMLページに表示しようとすると、テキストの代わりにこの奇妙な[オブジェクトHTMLLIElement]が表示されます。テキストの代わりに[オブジェクトHTMLLIElement]を取得しています。 Javascript関数

目的は、リスト項目の間にテキストを表示することです。ボタンをクリックすると、ランダムリスト項目(<li>5</li>など)が選択されますが、表示するのは5です。ここで

はHTMLです:

<ul id="list"> 
    <li>1</li> 
    <li>2</li> 
    <li>3</li> 
    <li>4</li> 
    <li>5</li> 
    <li>6</li> 
    <li>7</li> 
</ul> 

<button id="randomize">randomize</button> 

<p id="result">hello</p> 

とJS:事前

答えて

2

var randomize = document.getElementById("randomize"); 
var listItems = document.getElementById("list").getElementsByTagName("li"); 
var result = document.getElementById("result"); 

randomize.addEventListener("click", randomizeIt); 

function randomizeIt() { 
    var randomItem = listItems[Math.floor(Math.random() * listItems.length)]; 
    result.innerHTML = randomItem; 
    console.log(randomItem); 
} 

おかげであなたはliオブジェクトに結果セットさて、あなたは内のテキストを取得する必要があります

result.innerHTML = randomItem.textContent; 
+0

作品は完全にあなたが違いを説明することができ、HadeazはちょうどrandomItem.innerHTMLが、これは同様に働いてやることが示唆 –

+0

あなたに感謝し、どちらが使い良いですか? –

+1

この場合、html要素が含まれていないため同じです。 '

  • の場合、innerHTMLは' 'を、' textContent'は '7'を返します。 – Musa

    1

    <li>のinnerHTMLにアクセスする必要がある場合は、値を入力します。

    result.innerHTML = randomItem.innerHTML; 
    
    +0

    これもありがとうございます –

    関連する問題