2017-08-28 58 views
0

我正在嘗試獲取單擊的元素的下一個兄弟節點,並且使用打字稿。這是我的代碼。如何使用打字稿獲取addEventListener中的下一個兄弟節點

let jobRowList = document.getElementsByClassName('job-item'); 
for(let i = 0; i < jobRowList.length; i++) { 
    // add event listener for each element with class name job-item 
    let jobRow = jobRowList.item(i); 
    jobRow.addEventListener('click', (ev) => { 
    console.log(this.nextSibling); // error 
    }); 
} 

然而,由於thisElement而不是HTMLElement,它不會有一個名爲nextSibling屬性,所以在這裏打字原稿拋出一個錯誤。

TS2339: Property 'nextSibling' does not exist on type 'JobListTable'. 

有沒有什麼辦法可以使用typescript來獲得下一個單擊元素的同類?

+0

嘗試'ev.target.nextSibling' – abhishekkannojia

+0

'ev.target'可能是綁定元素的後代,我建議使用'ev.currentTarget',或者停止使用Typescript。 – adeneo

+0

@abhishekkannojia它也不起作用。 'EventTarget'沒有名爲'nextSibling'的屬性 – Searene

回答

1

this在箭頭函數中沒有引用點擊的元素。你可能會刪除箭頭功能,並使用一個普通函數 - 但是用箭頭,你可能找

ev.currentTarget.nextElementSibling 

jobRow.addEventListener('click', (ev) => { 
    console.log(ev.currentTarget.nextElementSibling); 
}); 
相關問題