2014-10-01 92 views
0

主要問題是我希望我的新文本出現在div的下一行,但不在同一位置或替換以前的文本。Javascript打印文本列

此刻我有打印出玩家和電腦的氣質得分的結果的代碼。

<style> 
    All needed code 
    </style> 

<script> 
function example() { 
if(player == 1) { 
document.getElementById("logtxt").innerHTML = "Player rolled "+tempscore+" points" 
} else if(player == 2) { 
document.getElementById("logtxt").innerHTML = "Computer rolled "+tempscore+" points" } 
</script> 

<html> 
<div class="log"> 
<h1>Game log<h1> 
<p id="logtxt"> </p> 
</div> 
</html 

顯然有更多的代碼,但是這是針對所需要的部分。

回答

0

您需要添加你登錄的字符串,而不是僅僅設定的內容,你可以使用+=此:

function example() { 
    if(player == 1) { 
     document.getElementById("logtxt").innerHTML += "Player rolled "+tempscore+" points<br />"; 
    } else if(player == 2) { 
     document.getElementById("logtxt").innerHTML += "Computer rolled "+tempscore+" points<br />"; 
    } 
} 

更妙的是把它變成一個可重複使用的功能:

function log(text) { 
    //log the text and start a new line 
    document.getElementById("logtxt").innerHTML += text + '<br />'; 
} 

function example() { 
    if(player == 1) { 
     log("Player rolled "+tempscore+" points"); 
    } else if(player == 2) { 
     log("Computer rolled "+tempscore+" points"); 
    } 
} 
0

另一個地方,它可以很好地使用insertAdjacentHTML ..

document.getElementById("logtxt").insertAdjacentHTML('beforeend', "<br/>Player rolled "+tempscore+" points"); 

Ex充足的解釋:

在#logtxt元素結束之前(在所有當前內容之後),並且您可以插入br標記以在每個條目上打破新行。

0

您應該使用.appendChild(),因此您不必獲取並設置.innerHTML+=,這也是一個選項。

var doc = docmument; 
function E(e){ 
    return doc.getElementById(e;) 
} 
function T(t){ 
    return doc.createTextNode(t); 
} 
function C(e){ 
    return doc.createElement(e); 
} 
function example(){ 
    var logtxt = E('logtxt'); 
    if(player === 1) { 
    logtxt.appendChild(T('Player rolled '+tempscore+' points')); 
    logtxt.appendChild(C('br')); 
    else if(player === 2){ 
    logtxt.appendChild(T('Computer rolled '+tempscore+' points')); 
    logtxt.appendChild(C('br')); 
    } 
}