Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

202
Views
¿Por qué este JavaScript funciona en Firefox pero no en otros navegadores?

Tengo un script simple que funciona (o debería) en la carga de la página y ordena una lista creada dinámicamente por los ID de los elementos de la lista. Funciona bien en Firefox tanto en Windows como en iPad Firefox, pero no en otros navegadores, incluidos Chrome, Edge, el navegador de mi teléfono Android o Silk de Amazon. Pensé que podría tener algo que ver con mi sitio web, así que puse el código en Codepen y el problema también es exactamente el mismo.

Cuando inspecciono el código en Chrome y Edge, no se informan errores, por lo que simplemente se ignora el código. ¿Por qué?

Aquí hay una versión ligeramente simplificada:

 window.onload = function() { let list = document.querySelector('.list'), results = document.querySelectorAll('.sort'); let sliced = Array.prototype.slice.call(results, 0); sliced.sort(sortByElementId()); sliced.reduce(function(list, item) { list.appendChild(item); return list; }, list); function sortByElementId() { return function(a, b) { b.id; a.id; return a.id > b.id; } } }
 <div class="day-or-evening"> <h4>Meeting</h4> <ul id="meetings" class="list"> <li id="id-22" class="sort li-22">Tuesday afternoon</li> <li id="id-23" class="sort li-23">Tuesday evening</li> <li id="id-25" class="sort li-25">Wednesday evening</li> <li id="id-24" class="sort li-24">Wednesday morning</li> <li id="id-27" class="sort li-27">Thursday evening</li> <li id="id-17" class="sort li-17">Monday afternoon</li> <li id="id-26" class="sort li-26">Thursday afternoon</li> <li id="id-21" class="sort li-21">Monday evening</li> </ul> </div>

about 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Su función de comparación de clasificación no es válida. Un comparador de clasificación debe devolver (para los argumentos a y b ) uno de los siguientes:

  • un número negativo, si a debe ir antes de b en el resultado;
  • un número positivo, si b debe ir antes a ;
  • cero, si a y b ya están en orden.

Si no lo hace, puede obtener resultados de clasificación inconsistentes e incorrectos. No hay garantía de que para dos elementos cualesquiera de su matriz, por ejemplo, siempre se pasen como a y b (en lugar de b y a ).

Para ordenar matrices de números, restar uno del otro da como resultado un buen valor de retorno. Para cadenas, como en su caso, puede usar la función .localeCompare() de cadenas, aunque eso tiene un comportamiento posiblemente extraño en algunos casos especiales.

about 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!