2014-04-15 78 views
0

當我點擊滾動按鈕時,沒有任何反應。有沒有辦法使用document.getElementByID("results").innerHTML來顯示結果,或者這是不推薦的?如何使用`document.getElementByID(「results」)打印。innerHTML = results?

HTML

<p>How many dice? 
    <br/> 
    <input type="text" id="numDice" /> 
</p> 
<p>How many sides per die? 
    <br/> 
    <input type="text" id="numSides" /> 
</p> 
<button onclick="diceRoll()" id="roll"/>Roll!</button> 
<p id="results"></p> 

的JavaScript

var numDice = document.getElementByID(numDice).innerHTML; 
var numSides = document.getElementByID(numSides).innerHTML; 

function diceRoll() { 
    var results = ""; 

    for (var i = 0; i < numDice; i++) { 
    results += (Math.random() * numSides) + 1; 
    } 

    document.getElementByID("results").innerHTML = results; 
} 

CodePen

+2

這個問題似乎是題外話,因爲它是關於一個錯字 – adeneo

+1

不應該'VAR numDice =的document.getElementById(numDice).innerHTML;'是'VAR numDice =的document.getElementById(numDice)。值;'? – j08691

回答

3

錯字,它不是

getElementByID 

getElementById 

的情況下是非常重要的,而且傳遞的參數都是字符串,所以它們應該被引用

function diceRoll() { 
    var numDice = document.getElementById('numDice').value; 
    var numSides = document.getElementById('numSides').value; 
    var results = ""; 

    for (var i = 0; i < numDice; i++) { 
     results += (Math.round(results + (Math.random() * numSides) + 1)).toString(); 
    } 

    document.getElementById('results').innerHTML = results; 
} 

FIDDLE

+2

難道我們不想用innerHTML的值嗎? – j08691

+1

@ j08691 - 是的,我們會 - > http://jsfiddle.net/JZV9V/ – adeneo

+0

我打算打印成一串數字。我會怎麼做呢?我在這裏做錯了什麼:'results + = toString(Math.floor(Math.random()* numSides + 1))+「」;' –

2

要調用之前document.getElementByID(numDice).innerHTML的DOM是準備。該元素不存在,所以這會引發錯誤。

你想得到值每個時間diceRoll()被調用,以便你得到用戶輸入的值。 numDice而不是當值更改時自動更新。

P.S.這是getElementById,你想用.value()<input> s。

function diceRoll() { 
    var results = ""; 
    var numDice = parseInt(document.getElementById('numDice').value, 10); 
    var numSides = parseInt(document.getElementById('numSides').value, 10); 

    for (var i = 0; i < numDice; i++) { 
    results += (Math.random() * numSides) + 1; 
    } 

    document.getElementById("results").innerHTML = results; 
}