我创建了一个页面,它将接受用户输入,然后将输入与单词进行比较。这个想法是用户有6次猜测这个词的机会。如果用户猜到单词或用完了猜测,点击的按钮将从 猜猜 更改为 开始新游戏 。我所做的一切都是正确的。
然后,用户将点击开始游戏按钮,页面将重置为原始值,这是我遇到问题的地方。我的按钮将更改为新值和新ID,但是当我单击按钮时游戏仍然会播放,然后当我再次单击它时它会重置。为什么不在第一次点击时休息?
以下是函数部分的外观
else if (theGuess.toLowerCase() == magicWord.toLowerCase())
{
//The user guesses the correct word
$("input[type=text]").ready(function () { $("#guestGuess").addClass("unblur"); });
$("input[type=submit]").val("Start a New Game");
$("input[type=submit]").attr("id","startNew");
$('#guestGuess').val('');
$('#startNew').click(function() {
location.reload();
});
magicWordResult = "Your guess was " + theGuess + "! Nice going!";
//document.writeln("Your guess was: " + guestGuess + "\nand the magic word is " + magicWord);
}
找到整个代码
答案 0 :(得分:1)
只需使用location.reload(true) - 这将导致页面从服务器而不是从缓存重新加载。供参考:https://developer.mozilla.org/en-US/docs/Web/API/Location.reload
更新:检查你的游戏,仍然看着破坏结果的线条。我刚刚为点击#guess
和#startNew
时调用的函数添加了console.log,结果是:在最大猜测后调用了#startNew
函数,但每次点击都会调用这两个函数。
有一个非常简单(懒惰?)的方法来修复它而不必费心为什么当前的代码不起作用 - 只需为#startNew
添加第二个按钮,所以不要改变单个按钮的功能你只会改变两个按钮的可见性。
另一种方法是在点击时只调用一个函数而不更改按钮的id并调整函数以处理参数 - 如function handleButton (value) {... }
- 并猜测它只需处理游戏的猜测部分,一开始 - 新的处理开始新部分 - 只需调用handleButton("guess")
和handleButton("new")
。由于你已经编码了这个游戏,我想你可以处理它;)
答案 1 :(得分:1)
我能够解决它。以下是我如何使其正常运行:
id
会更改为startNew
id
是否为guestGuess
。 这就是我遇到问题的地方,因为当我点击一个空窗口时,部分代码也在运行。
我在这里更新了代码http://liveweave.com/SZDKHz
非常感谢您的帮助。
答案 2 :(得分:0)
我总是使用location.href = location.href来刷新,但它的纯JavaScript而不是jquery。