Javascript 跟踪单击了哪些元素时,e.target.id有时为空

Javascript 跟踪单击了哪些元素时,e.target.id有时为空,javascript,click-tracking,Javascript,Click Tracking,我正在尝试测试以下JavaScript代码,其目的是跟踪用户在多项选择调查中的响应时间: document.onclick = function(e) { var event = e || window.event; var target = e.target || e.srcElement; //time tracking var ClickTrackDate = new Date; var ClickData = ""; Cli

我正在尝试测试以下JavaScript代码,其目的是跟踪用户在多项选择调查中的响应时间:

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为空,看起来是随机的,有什么想法吗?

可能是因为单击的元素没有id。例如,如果您有如下HTML,则会发生这种情况:

<div id="example">This is some <b>example</b> text.</div>
var target = e.target || e.srcElement;

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

只需使用
e.currentTarget
而不是
e.target

,您会发现使用jquery将使这变得更容易,因为它将为您处理浏览器问题、bug和怪癖。看起来确实如此-调查的单选按钮位于表格单元格内,单击按钮后仍在单元格内选择它,但在您的示例中,表单元格没有id。谢谢