IE e.target.id无效

cod*_*rex 18 javascript internet-explorer

document.click = check;

function check(e)
{ 
    var obj = document.getElementById('calendar_widget');

    if (obj != 'null')
    {
        if (e.target.id != 'show_calender')
            obj.style.display='none';
    }
}
Run Code Online (Sandbox Code Playgroud)

错误在Internet Explorer中:e.target.id未定义.

Pre*_*aul 40

IE不支持target属性,而是使用srcElement.

更改:

if (e.target.id != 'show_calender')
Run Code Online (Sandbox Code Playgroud)

至:

if ((e.target || e.srcElement).id != 'show_calender')
Run Code Online (Sandbox Code Playgroud)

您可能还需要将其添加到函数的开头:

if (!e) e = window.event
Run Code Online (Sandbox Code Playgroud)

您的最终代码如下所示:

function check(e) { 
    if (!e) e = window.event;
    var obj = document.getElementById('calendar_widget');

    if (obj != 'null') {
        if ((e.target || e.srcElement).id != 'show_calender')
                obj.style.display='none';
    }
}
Run Code Online (Sandbox Code Playgroud)


Nic*_*itz 5

Internet Explorer不会将事件对象传递给事件处理程序 - 它会将其设置为窗口对象的属性.此外,它使用srcElement而不是target.尝试


document.click = check;

function check(e)
{ 
    var target = e ? e.target : window.event.srcElement;
    var obj = document.getElementById('calendar_widget');

    if (obj != 'null')
    {
        if (target.id != 'show_calender')
                obj.style.display='none';
    }
}

Run Code Online (Sandbox Code Playgroud)