2013-01-09 21 views
2

道歉。也許我很累,只是看不到我在做什麼,但爲什麼下面的工作不行 - 即totalBits的值在'print'div的主體中打印?如果我alert()它顯示的值,但不使用innerHTML。innerHTML的不是問這樣一個微不足道的問題(剛學JS如何工作的),但我得到一個頭痛的旁邊沒有顯示

<html> 
<head> 
<title></title> 
<script type="text/javascript"> 

function answer(sentence){ 

var bitsOfString = sentence.split(" "); 
var numOfBits = bitsOfString.length; 
return numOfBits; 
} 

var sentence = prompt("OK, say something!") 
var totalBits = answer(sentence); 
var div = document.getElementById("print"); 
div.innerHTML = totalBits; 

</script> 
</head> 
<body> 
<div id="print"></div> 
</body> 
</html> 

回答

2

看看你的錯誤控制檯。您應該獲得div is null作爲錯誤,因爲該元素尚未被解析。

您需要將您的腳本塊您的div元素或推遲腳本的執行。

1

最有可能你的JavaScritpt執行前的DOM已準備就緒。

換句話說,換你的JavaScript,你操縱DIV在document.onload功能或者如果你樂於使用jQuery:$(function(){});

你可以看到它在這裏工作:http://jsfiddle.net/c8tyg/

附: 我不是移動<script>塊的粉絲,因爲恕我直言JavaScript應該工作,無論你如何加載它在頁面上。你正在操縱DOM - 尊重遊戲 - 等待DOM加載。

+0

小記:只要元素的子樹完整,部分DOM樹就完全夠用了。 – Zeta

+0

jQuery標籤在哪裏? jQuery如何幫助這個用戶? – epascarello

+0

「或者如果你樂意使用jQuery」 – rochal

4

因爲您在元素呈現給頁面之前調用它。元素加載後移動腳本,或者您可以調用代碼窗口onload/document準備好。

<html> 
    <head> 
    <title></title>  
    </head> 
    <body> 
    <div id="print"></div> 
    <script type="text/javascript"> 

     function answer(sentence) {  
     var bitsOfString = sentence.split(" "); 
     var numOfBits = bitsOfString.length; 
     return numOfBits; 
     } 

     var sentence = prompt("OK, say something!") 
     var totalBits = answer(sentence); 
     var div = document.getElementById("print"); 
     div.innerHTML = totalBits; 

    </script> 

    </body> 
</html> 
+0

例子:http://jsfiddle.net/hdPL4/ – epascarello

+0

哦,我的天的人,我一定是睡着了!當然,我試圖在解析器之前調用它。乾杯!好的,我要睡覺了。 ;) – Justs

相關問題