我在javascript中减少次数时遇到了麻烦,即使我已经谷歌搜索了2天而没有任何运气:(
我正在尝试调查问卷。 当用户启动问卷时,记录时间戳。 当用户完成/点击提交时,会记录一个新的时间戳,并减去两次以查明用户花了多少时间。
(对于这个例子,我刚刚使用按钮...) 当我减去i得到NaN - 我需要解析毫秒吗?
此处代码:Click
在这里:
var myVar = setInterval(myTimer, 1000);
function myTimer(){
var d = new Date();
document.getElementById("demo").innerHTML = d.toLocaleTimeString();
}
function maal1(){
var tid = new Date();
document.getElementById("demoo").innerHTML = tid.getTime();
}
function maal2(){
var tid = new Date();
document.getElementById("demooo").innerHTML = tid.getTime();
}
function calc(){
var tid1 = document.getElementById("demoo").value;
var tid2 = document.getElementById("demooo").value;
var tid3 = tid2 - tid1;
document.getElementById("tident").innerHTML = tid3;
}

<p class="centercenter" id="demo">Henter...</p></br>
<button class="centercenter" onClick="maal1()">Tid 1</button></br>
<p class="centercenter" id="demoo"></p></br>
<button class="centercenter" onClick="maal2()">Tid 2</button></br>
<p class="centercenter" id="demooo"></p></br>
<button class="centercenter" onClick="calc()">Calc</button></br>
<p class="centercenter" id="tident">Calc here</p>
&#13;
答案 0 :(得分:1)
var tid1 = document.getElementById("demoo").value;
var tid2 = document.getElementById("demooo").value;
应该是
var tid1 = document.getElementById("demoo").innerHTML;
var tid2 = document.getElementById("demooo").innerHTML;
希望这会有所帮助
答案 1 :(得分:1)
首先,value
会为您undefined
,因为这不是输入。您需要使用p
属性从innerText
获取文本值。
您基本上减去了从getElementById(...).innerText
获得的字符串值。
您需要使用Date
对象,因此需要将字符串值转换为数字,然后将其传递给Date
构造函数,如下所示:
var tid1 = new Date(parseInt(document.getElementById("demoo").innerText));
var tid2 = new Date(parseInt(document.getElementById("demooo").innerText));
var tid3 = tid2 - tid1;
关于parseInt方法的附注
使用parseInt()
方法时要小心。此方法仅采用它在表达式中找到的最右边的数字,即使它不是整个有效数字,例如:
var x = "5 Answers";
console.log(parseInt(x)); // Prints "5"
如果您的输入可能包含非数字字符,最好使用Number
构造函数安全地转换为数字:
var x = "5 Asnwers";
var num = Number(x);
console.log(num); // Prints NaN
答案 2 :(得分:0)
function calc(){
var tid1 = parseInt(document.getElementById("demoo").innerHTML) || 0;
var tid2 = parseInt(document.getElementById("demooo").innerHTML) || 0;
var tid3 = tid2 - tid1;
document.getElementById("tident").innerHTML = tid3;
}
你的innerHTML很好,但它被视为一个字符串。字符串减去字符串= NaN(不是数字)
解析为int(或小数点为parseFloat),它应该可以工作。
(顺便说一句,我添加了|| 0个空字符串,边缘情况我知道,但没有破坏)