Estoy implementando entradas de selección dinámica pero tienen un comportamiento extraño.
Hay tres entradas seleccionadas. La primera es para seleccionar el título de un libro, la segunda entrada es para seleccionar el capítulo inicial y la tercera es para el capítulo final. Cada libro tiene un número determinado de capítulos.
Entonces, cuando se selecciona un libro, las otras entradas se vacían y se llenan a través de un bucle for y cuando se selecciona el capítulo inicial, la entrada del capítulo final también se vacía y se llena a través de un bucle for.
El problema es: cuando selecciono algún capítulo inicial, la entrada del capítulo final se vacía pero no se rellena. El comportamiento es extraño porque funciona para los capítulos 1 y 2 iniciales, luego se detiene y vuelve a funcionar para los capítulos 10 y finales.
Código de secuencia de comandos:
$('#initial_chapter_select').change(function() { $('#initial_chapter_select option:selected').each(function() { selected_initial_chapter = $(this).val(); console.log('Selected initial chapter: ' + selected_initial_chapter); console.log('Selected book last chapter: ' + selected_book_last_chapter); $("#final_chapter_select option").remove(); console.log('Final Chapter emptied'); for (var chapter = selected_initial_chapter; chapter <= selected_book_last_chapter; chapter++) { console.log('Loop chapter: ' + chapter); $('#final_chapter_select').append("<option value=" + chapter + ">" + chapter + "</option>"); } }); });Terminal de consola cuando selecciono las entradas de capítulo inicial 1, 2, 3, ..., 10:
Selected initial chapter: 1 Selected book last chapter: 27 Final Chapter emptied Loop chapter: 1 Loop chapter: 2 (...) Loop chapter: 27 Selected initial chapter: 2 Selected book last chapter: 27 Final Chapter emptied Loop chapter: 2 Loop chapter: 3 (...) Loop chapter: 27 Selected initial chapter: 3 Selected book last chapter: 27 Final Chapter emptied Selected initial chapter: 4 Selected book last chapter: 27 Final Chapter emptied (...) Selected initial chapter: 9 Selected book last chapter: 27 Final Chapter emptied Selected initial chapter: 10 Selected book last chapter: 27 Final Chapter emptied Loop chapter: 10 Loop chapter: 11 (...) Loop chapter: 27Agregar parseInt solucionó el problema ...
Esto se debe a que el ciclo también puede manejar la comparación de cadenas, y esto crea resultados "sorprendentes" como los siguientes porque la evaluación se realiza carácter por carácter... Me gusta ordenar algunas cadenas. Un humano los consideraría como números... Por la computadora no.
Conclusión, tenga cuidado con el tipo de variables que utiliza.
console.log("22" > "3") // false!!!