单击事件重启功能

时间:2012-11-26 09:12:56

标签: javascript jquery

编辑*

在我的文字游戏中,我添加了一个重启按钮。目前的问题是,当我按下它时,它会回到开始屏幕,就像它应该的那样。但是当第二次点击开始按钮时,它会带回已经播放过的上一个游戏。我现在已将所有代码放入单独的函数中,以便我可以再次运行它们以用于新游戏。问题是我不知道如何清除上一场比赛以便重新开始。单击此按钮时,如何重新启动所有功能?

我有函数..

createGrid()
startplay()
restartplay()
keyPress()
backGroundSound()
dragEvent()
nextQuestion()
closeMessage()
replaySound()
backGroundImage()

我在document.ready function

中运行它们
$(document).ready(function () {

backGroundSound();
createGrid();
keyPress();
backGroundImage();
playBackGroundSound();
dragEvent();

$('.next-question').on('click', function () {
    nextQuestion();
});
$('.close-message').one("click", function () {
    closeMessage();
});
$(".replay-sound").click(function () {
    replaySound();
});
//Click event to start the game
$(".start-btn-wrapper").click(function () {
    startplay();
});
//Click event to restart the game
$(".restart-btn").click(function () {
    restartplay();
});     

单击重启按钮时,我希望它刷新功能,然后再次单击开始按钮时,为用户启动新游戏。如果不刷新页面,我该怎么做?

我想在单击重启按钮时清除功能,然后在开始按钮为clicK时再次启动它们。

这个小提琴只有脚本:http://jsfiddle.net/V4SYZ/

2 个答案:

答案 0 :(得分:1)

你可能只需要清除你在上一个游戏中存储数据的任何数据结构。例如,如果它在数组中,则将其重置为带有data = []的空数组,或者如果在对象中一个空对象data = {}等。如果不了解代码的结构及其工作原理,很难更具体。

修改

查看您在该小提琴中发布的代码,在调用$.ready()事件中的所有这些函数之前,您将一堆变量初始化为空数组;我没有密切关注代码,但你可能需要再次这样做才能让你的新游戏开始。

正如我之前建议的那样,我会将该代码移动到一个新函数中:

Function newGame() {
    randomWord = [];
    listOfWords = [];
    attemptNumber = [];
    completionNumber = [];
    populationNumber = [];
    gridSize = [];

    backGroundSound();
    createGrid();
    keyPress();
    backGroundImage();
    playBackGroundSound();
    dragEvent();
}

然后调用newGame()处理程序中的$.ready()函数和.restart-btn的点击处理程序:

$(document).ready(function () {

    newGame();

    $('.next-question').on('click', function () {
            nextQuestion();
    });
    $('.close-message').one("click", function () {
            closeMessage();
    });
    $(".replay-sound").click(function () {
            replaySound();
    });
    //Click event to start the game
    $(".start-btn-wrapper").click(function () {
            startplay();
    });

    //Click event to restart the game
    $(".restart-btn").click(function () {
            newGame();
            restartplay();
    });     

});

答案 1 :(得分:0)

总是可以执行非缓存重新加载,如下所示:

window.location.reload(true);

告诉浏览器重新加载页面并明确使用它在内存中的任何内容(基本上与Windows机器上的Cntrl+F5相同)。这假设您不需要在当前的“会话”中保留任何内容。