2015-11-08 137 views
1

我14歲的兒子正在研究一個科學項目,研究反應時間和年齡。他正在設置一個小型的網絡應用程序來測試人們 - 當一個頁面被加載時,一個計時器啓動並且出現一個STOP按鈕的延遲(本例爲4秒)。當他們點擊停止按鈕時,計時器停止。 到目前爲止,他完成了所有這些編碼工作。他正在使用他發現的一段JavaScript,並根據自己的需要對其進行了修改。
他的問題 - 如何將停止的時間傳遞給一個變量,然後將其傳遞給另一個頁面。如果變量是靜態的,即「你好」,他能夠成功地做到這一點。 函數stop()有什麼問題;在這個例子中?他目前得到[object HTMLSpanElement]將JavaScript值變爲變量

var clsStopwatch = function() { 
    // Private vars 
    var startAt = 0; // Time of last start/resume. (0 if not running) 
    var lapTime = 0; // Time on the clock when last stopped in milliseconds 

    var now = function() { 
      return (new Date()).getTime(); 
     }; 

    // Public methods 
    // Start or resume 
    this.start = function() { 
      startAt = startAt ? startAt : now(); 
     }; 

    // Stop or pause 
    this.stop = function() { 
      // If running, update elapsed time otherwise keep it 
      lapTime = startAt ? lapTime + now() - startAt : lapTime; 
      startAt = 0; // Paused 
     }; 

    // Reset 
    this.reset = function() { 
      lapTime = startAt = 0; 
     }; 

    // Duration 
    this.time = function() { 
      return lapTime + (startAt ? now() - startAt : 0); 
     }; 
}; 

var x = new clsStopwatch(); 
var $time; 
var clocktimer; 

function pad(num, size) { 
var s = "0000" + num; 
return s.substr(s.length - size); 
} 

function formatTime(time) { 
var h = m = s = ms = 0; 
var newTime = ''; 

h = Math.floor(time/(60 * 60 * 1000)); 
time = time % (60 * 60 * 1000); 
m = Math.floor(time/(60 * 1000)); 
time = time % (60 * 1000); 
s = Math.floor(time/1000); 
ms = time % 1000; 

newTime = pad(h, 2) + ':' + pad(m, 2) + ':' + pad(s, 2) + ':' + pad(ms, 3); 
return newTime; 
} 

function update() { 
$time.innerHTML = formatTime(x.time()); 
} 

function start() { 
$time = document.getElementById('time'); 
update(); 
clocktimer = setInterval("update()", 1); 
x.start(); 
$(document).ready(function() { $('#mybutton').delay(4000).fadeIn(0);}); 
} 

function stop() { 
x.stop(); 
//var varTime = "Hello"; 
var varTime = document.getElementById('time'); 
    window.location.href = "somephpfile.php?etime=" + varTime; 


} 
+1

試試看:'VAR varTime =的document.getElementById( '時間')的innerText;' – Rayon

+0

當前的varTime會返回一個對象(我相信這是一個DIV或P)。你必須使用.innerText來獲取對象內的文本值:)。希望這可以幫助 –

回答

1

var varTime = document.getElementById('time')被分配元素的varible,這是很好的,而不是一個壞的選擇,但是我相信你的兒子只需要該元素的HTML文本。

有兩種選擇。第一個選項將time元素保留在函數中,以便稍後進行擴展。

function stop() { 
    x.stop(); 
    var varTime = document.getElementById('time'); 
    if (varTime) { 
     window.location.href = "somephpfile.php?etime=" + varTime.innerHTML; 
    } 
} 

或者只是提取所需的文本併發送它 - 即使它是空的。

function stop() { 
    x.stop(); 
    if (document.getElementById('time')) { 
     window.location.href = "somephpfile.php?etime=" + document.getElementById('time').innerHTML; 
    } 
} 
+1

這兩個工作。謝謝! – kdkauf

+1

樂意提供幫助。項目祝你好運。 – Tigger

0

如果只是讀取元素本身,則需要讀取元素的innerHTML。這可以通過以下方式實現:

function stop() { 
x.stop(); 
//var varTime = "Hello"; 
var varTime = document.getElementById('time').innerHTML; 
window.location.href = "somephpfile.php?etime=" + 
} 
+0

謝謝。完美工作 – kdkauf