2012-03-25 32 views
2

我想測試下面的JavaScript代碼,其目的是要跟蹤的用戶響應時間安排上的選擇題調查:當該元素被點擊e.target.id跟蹤有時是空

document.onclick = function(e) { 

    var event = e || window.event;  
    var target = e.target || e.srcElement; 

    //time tracking 
    var ClickTrackDate = new Date; 
    var ClickData = ""; 
    ClickData = target.id + "=" + ClickTrackDate.getUTCHours() + ":" + 
     ClickTrackDate.getUTCMinutes() + ":" + 
     ClickTrackDate.getUTCSeconds() +";"; 

    document.getElementById("txtTest").value += ClickData; 
    alert(target.id); // for testing 
} 

通常target.id等於被點擊的元素的id,就像你期望的那樣,但是有時候target.id是空的,看似隨意,有什麼想法?

+2

你會發現usinng jQuery將使它更容易些,因爲它會處理瀏覽器問題,錯誤和怪癖。 – 2012-03-25 21:34:13

回答

6

可能是因爲被點擊的元素沒有ID。

<div id="example">This is some <b>example</b> text.</div> 

,並有人點擊粗體字「榜樣」,使該事件的目標將是b元素,而不是div:如果你有HTML這樣會發生這種情況,例如。

你可以試着走了DOM樹,直到找到確實有一個ID,像這樣的元素:

var target = e.target || e.srcElement; 

while (target && !target.id) { 
    target = target.parentNode; 
} 
// at this point target either has an ID or is null 
+0

看起來確實如此 - 調查的單選按鈕位於表格單元格內,並單擊關閉按鈕但在單元格內仍然選中它,但是在您的示例中沒有表格單元格的ID。謝謝! – 2012-03-25 21:54:48