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