减少javascript次

时间:2016-08-24 08:59:08

标签: javascript date time subtraction

我在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;
&#13;
&#13;

3 个答案:

答案 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个空字符串,边缘情况我知道,但没有破坏)

相关问题