我从Jon Duckett的书中学习jQuery" Javascript& jQuery:交互式前端开发"。到目前为止,我从本书中复制的所有代码似乎都运行得很顺利,但是这段代码让我难以理解。基本上,当您单击HTML中的列表项时,它会显示li旁边发生的click事件的日期。它有效,但日期显示在1969年12月31日,而不是对象点击日期。我一直在读如何解决这个问题,但我没有运气。是否有不同的方法来获得相同的结果,或者我只是遗漏了代码中的某些内容?
jQuery代码段和jsfiddle链接如下: jsFiddle
$(function(){
$('li').on('click', function(e){
$('li span').remove();
var date = new Date();
date.setTime(e.timeStamp);
var clicked = date.toDateString();
$(this).append('<span class="date">' + clicked + ' ' + e.type + '</span>');
});
});
答案 0 :(得分:8)
这是因为e.timeStamp
返回DOMHighResTimeStamp
而不是DOMTimeStamp
。这是非常少的。因此,它将日期设置为默认为12/31/1969。
new Date(),使用当前日期和时间创建一个新的日期对象。你不需要在这里明确地设置时间:
var date = new Date();
var clicked = date.toDateString();
答案 1 :(得分:1)
删除第date.setTime(e.timeStamp);
行,事情正常:
$(function(){
$('li').on('click', function(e){
$('li span').remove();
var date = new Date();
var clicked = date.toDateString();
$(this).append('<span class="date">' + clicked + ' ' + e.type + '</span>');
});
});