新日期()returns未定义
new Date() returns undefined
我有这个代码:
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 总是 returns NaN。当我使用 typeof 时,starttime 是未定义的,endtime 是一个对象,timediff 是一个数字。为什么?有解决办法吗?谢谢
您需要将 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();
}
}
对 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();
}
}
您将结束时间作为一个对象,因为 new Date() return 是一个对象。您可以使用 new Date().getTime() 来 return 1970 年 1 月 1 日午夜与 specified/current 日期之间的毫秒数。
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 转换为日期字符串,方法是将它们作为参数传递给 new Date() 并使用任何转换方法。
new Date(1491813677908).toString();
new Date(1491813677908).toLocaleString();
保重。
- 需要调用启动函数
- clicked 变量为 false 因此执行 if(clicked===false) 块
使clicked为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();
希望此解决方案对您有所帮助...
为此请在函数外声明两个变量
clicked= false
var starttime;
它看起来像:
clicked= false;
var starttime;
function start()
{
//your code
}
其余代码没问题。
我有这个代码:
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 总是 returns NaN。当我使用 typeof 时,starttime 是未定义的,endtime 是一个对象,timediff 是一个数字。为什么?有解决办法吗?谢谢
您需要将 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();
}
}
对 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();
}
}
您将结束时间作为一个对象,因为 new Date() return 是一个对象。您可以使用 new Date().getTime() 来 return 1970 年 1 月 1 日午夜与 specified/current 日期之间的毫秒数。
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 转换为日期字符串,方法是将它们作为参数传递给 new Date() 并使用任何转换方法。
new Date(1491813677908).toString();
new Date(1491813677908).toLocaleString();
保重。
- 需要调用启动函数
- clicked 变量为 false 因此执行 if(clicked===false) 块
使clicked为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();
希望此解决方案对您有所帮助...
为此请在函数外声明两个变量
clicked= false
var starttime;
它看起来像:
clicked= false;
var starttime;
function start()
{
//your code
}
其余代码没问题。