使用新日期()在Javascript中测量时间的问题

使用新日期()在Javascript中测量时间的问题,javascript,jquery,function,Javascript,Jquery,Function,你好,我是Javascript编程的初学者 我想用jquery构建一个简单的游戏,在这个游戏中,你必须尽可能快地拖放正确的图片。 现在的问题是时间测量。我想测量从按下开始键到游戏结束之间的持续时间(例如,正确的卡=10)。我制作了两个变量(startTime和endTime),我想在代码末尾使用它们来减去它们以获得持续时间。但是我不能用它们 我做错了什么?我想如果我一开始就把变量设置为全局变量就足够了 这是我的代码的重要部分: var开始时间; var结束时间; 函数handleCardDro

你好,我是Javascript编程的初学者

我想用jquery构建一个简单的游戏,在这个游戏中,你必须尽可能快地拖放正确的图片。 现在的问题是时间测量。我想测量从按下开始键到游戏结束之间的持续时间(例如,正确的卡=10)。我制作了两个变量(startTime和endTime),我想在代码末尾使用它们来减去它们以获得持续时间。但是我不能用它们

我做错了什么?我想如果我一开始就把变量设置为全局变量就足够了

这是我的代码的重要部分:

var开始时间;
var结束时间;
函数handleCardDrop(事件,ui){
var slotNumber=$(this).data('number');
var cardNumber=ui.draggable.data('number');
if(slotNumber==cardNumber){
ui.draggable.addClass('correct');
ui.draggable.draggable('disable');
$(this.dropable('disable');
ui.draggable.position({of:$(this),
我的‘左上’,
在“左上方”
});
ui.draggable.draggable('option','revert',false);
校正卡++;
}
如果(校正卡==10){
var endTime=new Date().getTime();
console.log(endTime);
console.log('Spiel endet');
}
//如果前一个插槽正确,则仅显示插槽

对于(var i=1;i您实际上是在以不同的格式声明多个开始时间和结束时间变量。要继续引用全局变量,请使用
var
在文件顶部声明一次,然后引用这些全局变量,而不使用
var

要计算差值,应在游戏结束时调用
time()
函数

var startTime;
var endTime;


function handleCardDrop(event, ui) {
    var slotNumber = $(this).data('number');
    var cardNumber = ui.draggable.data('number');


    if (slotNumber == cardNumber) {
        ui.draggable.addClass('correct');
        ui.draggable.draggable('disable');
        $(this).droppable('disable');
        ui.draggable.position({ of: $(this),
            my: 'left top',
            at: 'left top'
        });
        ui.draggable.draggable('option', 'revert', false);
        correctCards++;
    }


    if (correctCards == 10) {
        endTime = new Date().getTime();
        time();
        console.log(endTime);
        console.log('Spiel endet');
    }


    // Only show slot, if the previous one is correct
    for (var i = 1; i <= 10; i++) {
        if (correctCards == i) {
            $('#slot' + [i + 1]).css('display', 'block')
        }
    }
}

$('#startButton').click(function Ball() {
    startTime = new Date().getTime();
    console.log(startTime);
    console.log('Spiel beginnt');
    $('#ball').animate({
        left: '+=800'
    }, 20000, "linear");

});


function time() {
  var timeDiff = endTime - startTime;
  timeDiff /= 1000;
  var seconds = Math.round(timeDiff);
  console.log(seconds + " seconds");
}

有关更多信息,请查看和JavaScript中的关键字。

您实际上是在以不同的格式声明多个startTime和endTime变量。要继续引用全局变量,请使用
var
在文件顶部声明一次,然后晚些时候引用这些全局变量r开启,不带
var

要计算差值,应在游戏结束时调用
time()
函数

var startTime;
var endTime;


function handleCardDrop(event, ui) {
    var slotNumber = $(this).data('number');
    var cardNumber = ui.draggable.data('number');


    if (slotNumber == cardNumber) {
        ui.draggable.addClass('correct');
        ui.draggable.draggable('disable');
        $(this).droppable('disable');
        ui.draggable.position({ of: $(this),
            my: 'left top',
            at: 'left top'
        });
        ui.draggable.draggable('option', 'revert', false);
        correctCards++;
    }


    if (correctCards == 10) {
        endTime = new Date().getTime();
        time();
        console.log(endTime);
        console.log('Spiel endet');
    }


    // Only show slot, if the previous one is correct
    for (var i = 1; i <= 10; i++) {
        if (correctCards == i) {
            $('#slot' + [i + 1]).css('display', 'block')
        }
    }
}

$('#startButton').click(function Ball() {
    startTime = new Date().getTime();
    console.log(startTime);
    console.log('Spiel beginnt');
    $('#ball').animate({
        left: '+=800'
    }, 20000, "linear");

});


function time() {
  var timeDiff = endTime - startTime;
  timeDiff /= 1000;
  var seconds = Math.round(timeDiff);
  console.log(seconds + " seconds");
}

有关更多信息,请查看JavaScript中的和关键字。

您正在各自的函数中重新定义变量
endTime
startTime
,这将创建新的局部变量。删除
var
声明,您将能够访问全局变量的值。您需要游戏结束时,uld也会调用您的
time
函数

var startTime;
var endTime;


function handleCardDrop(event, ui) {
    var slotNumber = $(this).data('number');
    var cardNumber = ui.draggable.data('number');


    if (slotNumber == cardNumber) {
        ui.draggable.addClass('correct');
        ui.draggable.draggable('disable');
        $(this).droppable('disable');
        ui.draggable.position({ of: $(this),
            my: 'left top',
            at: 'left top'
        });
        ui.draggable.draggable('option', 'revert', false);
        correctCards++;
    }


    if (correctCards == 10) {
        endTime = new Date().getTime();
        time();
        console.log(endTime);
        console.log('Spiel endet');
    }


    // Only show slot, if the previous one is correct
    for (var i = 1; i <= 10; i++) {
        if (correctCards == i) {
            $('#slot' + [i + 1]).css('display', 'block')
        }
    }
}

$('#startButton').click(function Ball() {
    startTime = new Date().getTime();
    console.log(startTime);
    console.log('Spiel beginnt');
    $('#ball').animate({
        left: '+=800'
    }, 20000, "linear");

});


function time() {
  var timeDiff = endTime - startTime;
  timeDiff /= 1000;
  var seconds = Math.round(timeDiff);
  console.log(seconds + " seconds");
}
var开始时间;
var结束时间;
函数handleCardDrop(事件,ui){
var slotNumber=$(this).data('number');
var cardNumber=ui.draggable.data('number');
if(slotNumber==cardNumber){
ui.draggable.addClass('correct');
ui.draggable.draggable('disable');
$(this.dropable('disable');
ui.draggable.position({of:$(this),
我的‘左上’,
在“左上方”
});
ui.draggable.draggable('option','revert',false);
校正卡++;
}
如果(校正卡==10){
endTime=newdate().getTime();
时间();
console.log(endTime);
console.log('Spiel endet');
}
//如果前一个插槽正确,则仅显示插槽

对于(var i=1;i您正在各自的函数中重新定义变量
endTime
startTime
,这将创建新的局部范围变量。删除
var
声明,您将能够访问全局变量的值。当游戏结束

var startTime;
var endTime;


function handleCardDrop(event, ui) {
    var slotNumber = $(this).data('number');
    var cardNumber = ui.draggable.data('number');


    if (slotNumber == cardNumber) {
        ui.draggable.addClass('correct');
        ui.draggable.draggable('disable');
        $(this).droppable('disable');
        ui.draggable.position({ of: $(this),
            my: 'left top',
            at: 'left top'
        });
        ui.draggable.draggable('option', 'revert', false);
        correctCards++;
    }


    if (correctCards == 10) {
        endTime = new Date().getTime();
        time();
        console.log(endTime);
        console.log('Spiel endet');
    }


    // Only show slot, if the previous one is correct
    for (var i = 1; i <= 10; i++) {
        if (correctCards == i) {
            $('#slot' + [i + 1]).css('display', 'block')
        }
    }
}

$('#startButton').click(function Ball() {
    startTime = new Date().getTime();
    console.log(startTime);
    console.log('Spiel beginnt');
    $('#ball').animate({
        left: '+=800'
    }, 20000, "linear");

});


function time() {
  var timeDiff = endTime - startTime;
  timeDiff /= 1000;
  var seconds = Math.round(timeDiff);
  console.log(seconds + " seconds");
}
var开始时间;
var结束时间;
函数handleCardDrop(事件,ui){
var slotNumber=$(this).data('number');
var cardNumber=ui.draggable.data('number');
if(slotNumber==cardNumber){
ui.draggable.addClass('correct');
ui.draggable.draggable('disable');
$(this.dropable('disable');
ui.draggable.position({of:$(this),
我的‘左上’,
在“左上方”
});
ui.draggable.draggable('option','revert',false);
校正卡++;
}
如果(校正卡==10){
endTime=newdate().getTime();
时间();
console.log(endTime);
console.log('Spiel endet');
}
//如果前一个插槽正确,则仅显示插槽

对于(var i=1;i您正在声明'startTime'和'endTime'。只需在代码片段第1行和第2行的初始'var'声明之后从这两个声明中删除变量声明。

您正在声明'startTime'和'endTime'。只需在lin中的初始'var'声明之后从这两个声明中删除变量声明你的代码片段的e 1和e 2。

?到底是什么问题?这是怎么回事
time()
函数被调用?还要注意,JavaScript时间戳值以毫秒为单位,而不是以秒为单位。您的
startTime
endTime
的作用域是它们各自的函数,它们在其中声明。它们在函数
time
中不可见。这是因为您再次使用
var
,您可以隐藏它们全局变量。??到底是什么问题?这是怎么回事
函数被调用?还要注意,JavaScript时间戳值以毫秒为单位,而不是以秒为单位。您的
startTime
endTime
的作用域是它们各自的函数,它们在其中声明。它们在函数
time
中不可见。这是因为您再次使用
var
,您可以隐藏它们全局变量.correct,还有一件事要添加到您的结束逻辑
time()
if(correctCards==10){endTime=newdate().getTime();time();console.log(endTime);console.log('Spiel endet');}