2013-10-26 35 views
2

我打電話打印到一個div函數,然後返回其上還印到一個div的字符串。下面將只打印「兩節」,但我期待它打印「一」,那麼「二」:爲什麼在向innerHTML返回值時,函數中的innerHTML會被忽略?

<body> 
    <div id="view"></div> 
</body> 
<script> 
global_cdiv = "view" 
function test1(){ 
    document.getElementById(global_cdiv).innerHTML += "one" + "<br>"; 
    return "two"; 
} 
document.getElementById(global_cdiv).innerHTML += test1(); 

</script> 

沒有錯誤或任何在調試露面。 爲什麼Javascript忽略函數內的innerHTML? (A工作周圍將存儲從TEST1()爲可變,則值打印出來,但爲什麼不能TEST1可以直接使用?)

+0

至少你可以把'

1

,當你調用document.getElementById(global_cdiv).innerHTML += test1()這是執行的順序:
1-評估document.getElementById(global_cdiv).innerHTML和將其保存到臨時變量中
2-執行test1函數
3-附加臨時v良莠不齊到test1函數的返回
4-結果分配給document.getElementById(global_cdiv).innerHTML

,所以這是你在做什麼大概:

var temp = document.getElementById(global_cdiv).innerHTML 
document.getElementById(global_cdiv).innerHTML = "one" // inside your function 
document.getElementById(global_cdiv).innerHTML = temp + "two" 

第二innerHTML(這是你的函數裏面,你的情況)分配被第三個覆蓋(不附加到「兩個」)

+0

在+ =語句之後''test1()'內有'console.log(document.getElementById(global_cdiv).innerHTML)'。 – thefourtheye

0
<body> 
    <div id="view"></div> 
</body> 
<script> 
global_cdiv = "view"; 
    var temp = ""; 
function test1(){ 
    temp = "one" + "<br>"; 
    return temp + "two"; 
} 
document.getElementById(global_cdiv).innerHTML = test1(); 

</script> 

簽出上面的代碼。這將解決您的問題。

相關問題