我有这段代码:
function submit(){
//Some stuff here...
clicked= false
//Some stuff here...
function start() {
var starttime;
if(clicked===false)
{
document.getElementById("start").innerHTML = "Submit";
starttime = new Date();
document.getElementById("title").innerHTML = "<b>...</b>";
clicked=true;
} else {
var endtime = new Date();
var timediff = endtime - starttime;
alert(typeof endtime + typeof starttime + typeof timediff + timediff + endtime + starttime);
submit();
}
}
timediff总是返回NaN。当我使用typeof时,starttime是未定义的,endtime是一个对象,timediff是一个数字。为什么?有解决方案吗?感谢
答案 0 :(得分:1)
您需要将starttime设为全局,以使其正常工作:
clicked= false;
var starttime;
//Some stuff here...
function start() {
if(clicked === false) {
document.getElementById("start").innerHTML = "Submit";
starttime = new Date();
document.getElementById("title").innerHTML = "<b>...</b>";
clicked=true;
} else {
var endtime = new Date();
var timediff = endtime - starttime;
alert(typeof endtime + typeof starttime + typeof timediff + timediff + endtime + starttime);
submit();
}
}
答案 1 :(得分:1)
在Date对象上使用getTime函数来获得差异
function submit(){
//Some stuff here...
clicked= false
//Some stuff here...
function start() {
var starttime;
if(clicked===false)
{
document.getElementById("start").innerHTML = "Submit";
starttime = new Date();
document.getElementById("title").innerHTML = "<b>...</b>";
clicked=true;
} else {
var endtime = new Date();
var timediff = endtime.getTime() - starttime.getTime();
submit();
}
}
答案 2 :(得分:0)
您将endtime作为对象,因为新的Date()返回一个。您可以使用新的Date()。getTime()来返回1970年1月1日午夜和指定/当前日期之间的毫秒数。
startTime未定义,因为你没有初始化它所以如果else块运行,它的值将是未定义的。所以我希望这能解决你的问题。
function submit(){
//Some stuff here...
var starttime = new Date().getTime();
var clicked = false
//Some stuff here...
function start() {
if(clicked===false)
{
document.getElementById("start").innerHTML = "Submit";
//starttime = new Date();
document.getElementById("title").innerHTML = "<b>...</b>";
clicked=true;
} else {
var endtime = new Date().getTime();
var timediff = endtime - starttime;
alert(typeof endtime + typeof starttime + typeof timediff + timediff + endtime + starttime);
submit();
}
}
Yon总是可以将startTime和endTime转换为日期字符串,方法是将它们作为参数传递给新的Date()并使用任何转换方法。
new Date(1491813677908).toString();
new Date(1491813677908).toLocaleString();
小心。
答案 3 :(得分:0)
点击为true将不会实例化starttime
function submit(){
var clicked= true;
function start() {
var starttime = new Date();
if(!clicked)
{
alert("When clicked is : "+clicked);
alert(starttime);
clicked=true;
} else {
alert("When clicked is : "+clicked)
var endtime = new Date();
var timediff = endtime - starttime;
/*
alert(typeof starttime);
alert(typeof endtime);
alert(typeof timediff);
*/
alert("starttime "+starttime);
alert("endtime "+endtime);
alert("timediff "+timediff);
}
}
start();
}
submit();
希望这个解决方案能帮到你......
答案 4 :(得分:0)
为此,请在函数
之外声明两个变量clicked= false
var starttime;
它看起来像:
clicked= false;
var starttime;
function start()
{
//your code
}
其余的代码很好。