在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ 控制臺輸出與js文件輸出不一致 (event.currentTarget得到nu

控制臺輸出與js文件輸出不一致 (event.currentTarget得到null)

代碼:

const target = document.getElementById('target');
let e;
target.addEventListener('click', function (event) {
    e = event;
    console.log(e);
    console.log(e.currentTarget);
});

控制臺輸出:

MouseEvent?{isTrusted: true, screenX: 149, screenY: 253, clientX: 149, clientY: 131,?…}
<div id=?"target">?</div>?

然而,在控制臺輸入:

console.log(e);
console.log(e.currentTarget);

得到的結(jié)果卻是:

VM1656:1 MouseEvent?{isTrusted: true, screenX: 149, screenY: 253, clientX: 149, clientY: 131,?…}
VM1656:2 null

顯然,event對象是相同的,但是為什么控制臺輸出currentTargetnull?

從控制臺查看event對象中的currentTarget,其值是null,那為什么js文件中輸出的currentTarget不是null?

回答
編輯回答
玩控

你在控制臺只輸入了后面兩句,這個明顯主體都不對了,前面那個event是執(zhí)行過程中捕獲到的,后面的就不是一個東西啊。簡單說就是上下文環(huán)境都不一樣了。

2017年6月23日 11:42
編輯回答
離魂曲

根據(jù) W3C 規(guī)范:

https://www.w3.org/TR/DOM-Lev...

currentTarget - Used to indicate the EventTarget whose EventListeners are currently being processed. This is particularly useful during capturing and bubbling.

currentTarget 在事件正在處理過程中使用。

你試試下面代碼:

const target = document.getElementById('target');
let e;
target.addEventListener('click', function (event) {
    setTimeout(function () {
        e = event;
        console.log(e);
        console.log(e.currentTarget);
    })
});

currentTarget 同樣是 null,因為當讀取 currentTarget 屬性時,事件處理已經(jīng)結(jié)束了。

2017年1月7日 19:51