2017-03-16 51 views
2

這工作:新的Date().getTime()在HTML中不顯示<p></p> NAN錯誤

document.getElementById("2").innerHTML = new Date().getTime() - startDelay ; 

var startDelay; //global scope 
startDelay = new Date().getTime(); //this is done inside of a function 

這也適用

document.getElementById("2").innerHTML = startDelay + " " + startTime ; 
var startTime; //global scope 
startTime = new Date().getTime(); //this is done in another function 

//For some odd reason this does NOT work :/ 

document.getElementById("2").innerHTML = new Date().getTime() - startDelay + " " + new Date().getTime() - startTime; 

在Chrome中運行這樣的:這給了我一個NAN

document.getElementById("2").innerHTML = 1 + " " + new Date().getTime() - startTime; 

這也給我一個NAN錯誤!

+1

感謝試圖幫助,但我覺得@約翰Vandivier只是解決了這個! –

+0

太棒了!如果解決了您的問題,請點擊左側的複選標記以接受答案。 –

+0

正在等待愚蠢的10分鐘「冷靜的事情」 –

回答

3

您在混合數據類型。嘗試使用括號以保證數學運算完成前數據強制轉換爲字符串:「非數字」

(new Date().getTime() - startDelay) + " " + (new Date().getTime() - startTime); 

NaN錯誤意味着這是一種類型錯誤,因爲JS引擎認爲你正試圖「減掉字符串」,這不是一個有效的操作。

+0

只是做到了這一點,它的工作原理! –

4

整個表達式new Date().getTime() - startDelay + " " + new Date().getTime() - startTime;

它開始

new Date().getTime() - startDelay 

其中,由於startDelay所佔用的定義是一樣的

new Date().getTime() - new Date().getTime(); 

這會給你一個數字。當您添加的數量,您嘗試添加一個字符串的空間,在這部分代碼:

.. - startDelay + " " 

現在表達就成了一個字符串。由於您的字符串,一個空的空間,當你添加此

.. + new Date().getTime() 

結束你得到這樣的事情

"1489700484842 1489700484842" 

你可以告訴有一個在中間的空白處。

該字符串,如果你做- startTime;確保你不會得到一些

+0

謝謝你對答案的深入解釋。現在一切都說得通了 ! :) –

+0

@ DR.Palson_PH.d當然,請記住,upvote對你有用的答案,並選擇正確的答案 –

+1

我試圖選擇這個答案,但其他人先回答。但還是謝謝你! –