найти индекс элемента в JavaScript - PullRequest
0 голосов
/ 11 октября 2019

Я перехватываю все элементы по имени класса и создаю прослушиватель для каждого из них следующим образом:

const subnavs = document.getElementsByClassName('subnav') 
for ( let i =0 ; i <subnavs.length ; i++ ) {
   subnavs[i].addEventListener('mouseover', function() {
   purpleDiv.style.marginTop =  rect.height + 'px'
}) 

Когда вызывается событие мыши, как получить индекс, по которому щелкнули субнап? Это в Wordpress, поэтому у меня нет простого способа добавить идентификатор к каждому subnav, что бы сработало.

Ответы [ 2 ]

1 голос
/ 11 октября 2019

Если вы хотите, чтобы индекс просто использовал i в вашем обратном вызове:

   subnavs[i].addEventListener('mouseover', function() {
       purpleDiv.style.marginTop =  rect.height + 'px'
       console.log("INDEX: ", i)
   }) 

Если вы пытаетесь использовать индекс для доступа к элементу позже, я бы порекомендовал следующее:

Когда вызывается ваш обратный вызов в слушателе событий, ему передается MouseEvent

Так что если вы измените function() { на function(event) {, вы можете получитьконкретный элемент, на который накладывается event.target, который является элементом, который вызвал событие mouseover.

   subnavs[i].addEventListener('mouseover', function(event) {
       purpleDiv.style.marginTop =  rect.height + 'px'
       console.log("ELEMENT: ", event.target)
   }) 
0 голосов
/ 11 октября 2019

Вы можете использовать объект:

const subnavs = document.getElementsByClassName('subnav') 
for ( let i =0 ; i <subnavs.length ; i++ ) {
   subnavs[i].addEventListener('mouseover', function(e) {
   /*** Now you can use 'e' to reference the nav triggering the listener **/
   e.style.marginTop =  rect.height + 'px'
   ***/
   purpleDiv.style.marginTop =  rect.height + 'px'
}) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...