[英]How to make a history of my var (Math.random)
我的代碼有問題,我想在歷史記錄框中看到我傳遞的 4 個生成的數字 (Math.random),但這些數字顯示相同。 有沒有辦法延遲var?
我試過按順序排列 var,但這不會拖延。
我的html:
<div class="text-position-history">
<div class="text-style-history">
<p id="historyT"></p>
</div>
</div>
</body>
</html>
我的javascript:
var green = 0;
var red = 0;
function odds(){
var result = Math.random();
if (result < 0.5)
{
document.body.style.backgroundColor = "green";
green++;
document.getElementById('greenT').innerHTML = "Times you survived: " + " " + green;
}
else{
document.body.style.backgroundColor = "red";
red++;
document.getElementById('redT').innerHTML = "Times you died: " + " " + red;
}
document.getElementById('resultT').innerHTML = "Guessed number: " + " " + result;
var history1 = result;
var history2 = history1;
var history3 = history2;
document.getElementById('historyT').innerHTML = "Guessed number: " + " " + result + " " + history1 + " " + history2 + " " + history3;
}
有沒有辦法做到這一點?
為什么不創建一個數組,然后在調用Math.random()
之后將結果的新值附加到數組中?
var resultHistory = new Array();
var result = Math.random();
resultHistory.push(result);
然后稍后打印出數組。
為什么不只使用數字數組?
var _history = []; function toHTMLElement(historyNode) { var node = document.createElement("div"); node.innerHTML = historyNode.text; node.style.background = historyNode.win?'green':'red'; return node; } function renderHistory() { var result = document.getElementById("result"); result.innerHTML = ""; _history.forEach(function(e){ result.appendChild(toHTMLElement(e)); }); } document.getElementById("form").addEventListener("submit", function(e){ e.preventDefault(); _history.push((Math.random()>0.5)?{win: true, text: 'You win'}:{win: false, text: 'You lose'}); if (_history.length > 3) _history.shift(); renderHistory(); });
<form id="form"> <input type="submit"> </form> <div id="result"></div>
var green = 0;
var red = 0;
function odds(){
var result = Math.random();
if (result < 0.5)
{
document.body.style.backgroundColor = "green";
green++;
document.getElementById('greenT').innerHTML = "Times you survived: " + " " + green;
}
else{
document.body.style.backgroundColor = "red";
red++;
document.getElementById('redT').innerHTML = "Times you died: " + " " + red;
}
document.getElementById('resultT').innerHTML = "Guessed number: " + " " + result;
var myList = [result, result, result];
var history1 = myList.shift();
var history2 = myList.shift();
var history3 = myList.shift();
document.getElementById('historyT').innerHTML = "Guessed numbesr: " + " " + history1 + " " + history2 + " " + history3;
}
這仍然給出相同的結果?
我認為實際上改變你的歷史變量的順序應該可以解決它。 將它們更改為
var history3 = history2;
var history2 = history1;
var history1 = result;
現在,您將所有內容覆蓋為結果,因為:
var history1 = 結果 var history2 = history1 (history1 現在已經指的是結果)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.