2012-03-25 89 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