Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

233
Visualizações
El valor de la variable no se actualiza cuando se devuelve

No puedo entender por qué no se actualiza un número entero. He agregado detectores de eventos a clases específicas y una vez que paso el mouse sobre ellos, el índice debería actualizarse.

Ese no es el caso. El registro de la consola sigue repitiendo que el índice antiguo: 0, el índice nuevo es 1. Una vez que paso el cursor por el siguiente elemento, repite que el índice antiguo es 0 y el índice nuevo es 1 (el valor del índice no se actualiza).

Cualquier ayuda sería muy apreciada. Gracias

 var index = 0; var indexArray = ["1", "2", "3"]; function addListeners() { let eListeners = document.querySelectorAll(".eListener"); for (let i = 0; i < eListeners.length; i++) { eListeners[i].addEventListener("mouseover", function() { indexPlus(index) }); } } function indexPlus(index) { if (index == 2) { console.log("Old index: " + index); index = 0; console.log("New index: " + index); return index; } else { console.log("Old index: " + index); index = index + 1; console.log("New index: " + index); return index; } } addListeners();
 <span class="eListener">Some text1</span> <span class="eListener">Some text2</span> <span class="eListener">Some text3</span> <span class="eListener">Some text4</span> <span class="eListener">Some text5</span> <span class="eListener">Some text6</span>

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Está modificando el index del parámetro de la función indexPlus , no su variable index global.

Para lograr eso, debe asignar el valor de retorno de indexPlus para index dentro de sus oyentes. Para que quede más claro, he cambiado el nombre del parámetro de función a idx .

Últimas cosas: he acortado su cheque dentro de la función ìndexPlus`:

En lugar de verificar 2 y luego restablecer a 0 , y de lo contrario incrementar, puede utilizar el operador restante % :

 idx = ++idx % 3;

Eso es cuestión de qué tan cómodo te sientas con eso. No hay nada de malo en que sus cheques permanezcan de la forma en que los implementó.

También he refactorizado su bucle basado en índices a un bucle for...of que es el preferido porque mejora la legibilidad.

 let index = 0; let eListeners = document.querySelectorAll(".eListener"); function addListeners() { for (const eListener of eListeners) { eListener.addEventListener("mouseover", function() { index = indexPlus(index) }); } } function indexPlus(idx) { console.log("Old index: " + idx); idx = ++idx % 3; console.log("New index: " + idx); return idx; } addListeners();
 <span class="eListener">Some text1</span> <span class="eListener">Some text2</span> <span class="eListener">Some text3</span> <span class="eListener">Some text4</span> <span class="eListener">Some text5</span> <span class="eListener">Some text6</span>

about 4 years ago · Juan Pablo Isaza Relatório

0

En la función indexPlus , use un nombre diferente para su parámetro, no el index , ya que ya está definido globalmente

 var index = 0; var indexArray = []; function addListeners() { let eListeners = document.querySelectorAll(".eListener"); for (let i = 0; i < eListeners.length; i++) { //indexArray[i] = 0; eListeners[i].addEventListener("mouseover", function() { indexPlus(index) }); } } function indexPlus(ind) { if (ind == 2) { console.log("Old index: " + index); index = 0; console.log("New index: " + index); } else { console.log("Old index: " + index); index = index + 1; console.log("New index: " + index); } } addListeners();
 <span class="eListener">Some text1</span> <span class="eListener">Some text2</span> <span class="eListener">Some text3</span> <span class="eListener">Some text4</span> <span class="eListener">Some text5</span> <span class="eListener">Some text6</span>

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda