在跟踪点击了哪些元素时,e.target.id有时是空的

时间:2012-03-25 21:07:16

标签: 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 = ""; 
    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 个答案:

答案 0 :(得分:7)

可能是因为点击的元素没有ID。例如,如果你有这样的HTML,就会发生这种情况:

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

并且有人点击粗体字“示例”,因此事件目标将是b元素,而不是div

您可以尝试沿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

答案 1 :(得分:0)

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