我用有限的HTML / JavaScript知识创建了一个简单的石头剪刀游戏。我创建了几个按钮:一个用于运行游戏,另一个用于重置游戏。
点击游戏按钮后,它会运行我的JavaScript函数,其中包括prompt()和随机选择。宣布获胜者。但是,我注意到我的所有HTM都已消失了!
代码:
<!DOCTYPE html>
<html>
<title>Game: RPS</title>
<body>
<h1>JS Test Output</title>
<h3>Rock, Paper, Scissors: You vs Computer!</h3>
<button onclick="game()">Play Game</button>
<input type="button" value="Reload Page" onClick="window.location.reload()">
<script>
function game(){
var a = prompt("Rock, Paper, or Scissors?");
var b = ["Rock","Paper","Scissors"];
var rand = b[Math.floor(Math.random() * b.length)];
if (a== "Rock" && rand=="Paper") {
document.write("Computer Wins!");
}
else if (a=="Rock" && rand=="Scissors") {
document.write("Player 1 wins!");
}
else if (a=="Paper" && rand=="Rock") {
document.write("Player 1 wins!");
}
else if (a=="Paper" && rand=="Scissors") {
document.write("Computer wins!");
}
else if (a=="Scissors" && rand=="Rock") {
document.write("Computer wins!");
}
else if (a=="Scissors" && rand=="Paper") {
document.write("Player 1 wins!");
}
else if (a == rand) {
document.write("We have a tie!");
}
else {
document.write("That's not a choice! Computer wins!");
}
}
</script>
</body>
</html>
感谢您的阅读,我们非常感谢任何贡献。这是我的第一篇文章,我非常有兴趣学习这一点,希望有一天能成为一名程序员(我计划从工作中腾出时间,并可能进入训练营)。我真的很喜欢尝试/阅读/学习编程(不要以为我已经准备好学习计算机科学的东西,比如算法,数据结构,或者我应该现在开始????)
乔恩
答案 0 :(得分:3)
替换HTML的原因是因为一个邪恶的JavaScript函数: document.write()
。
绝对是#34;糟糕的形式。&#34;如果您在页面加载时使用它,它只适用于网页;如果在运行时使用它,它将用输入替换整个文档。如果您将其应用为严格的XHTML结构,那么它甚至都不是有效的代码。
document.write
写入文档流。在已关闭(或已加载)的文档上调用document.write
会自动调用document.open
来清除文档。
document.write()
有两位心腹,document.open()
和document.close()
。加载HTML文档时,文档打开&#34;打开&#34;。 文档加载完毕后,文档已关闭&#34;。此时使用document.write()
将删除整个(已关闭)HTML文档并将其替换为新文档(公开)文件。这意味着您的网页已经自行删除,并从头开始编写新页面。
我相信document.write()
会导致浏览器性能下降(如果我错了,请纠正我)。
此示例在页面加载后将输出写入HTML文档。当你按下&#34;消灭&#34;时,请注意document.write()
的邪恶力量清除整个文件。按钮:
I am an ordinary HTML page. I am innocent, and purely for informational purposes. Please do not <input type="button" onclick="document.write('This HTML page has been succesfully exterminated.')" value="exterminate"/> me!
&#13;
.innerHTML
这是一个很好的选择,但您需要选择要放置.innerHTML
文本的位置。 示例:document.getElementById('output1').innerHTML = 'Some text!';
.createTextNode()
是W3C推荐的替代方案。 示例:var para = document.createElement('p');
para.appendChild(document.createTextNode('Hello, '));
注意:已知这会导致性能下降(慢于.innerHTML
)。我建议改为使用.innerHTML
。
.innerHTML
):
I am an ordinary HTML page. I am innocent, and purely for informational purposes. Please do not <input type="button" onclick="document.getElementById('output1').innerHTML = 'There was an error exterminating this page. Please replace <code>.innerHTML</code> with <code>document.write()</code> to complete extermination.';" value="exterminate"/> me!<p id="output1"></p>
&#13;