javascript/jquery for循环未循环所有索引



我正在实现动态选择输入,但它们的行为很奇怪。

有三个选择输入。第一个是选择书名,第二个输入是选择第一章,第三个输入是最后一章。每本书都有确定的章节数。

因此,当选择一本书时,其他输入通过for循环清空和填充,当选择初始章节时,最终章节输入也通过for循环排空和填充。

问题是:当我选择某个初始章节时,最后一章的输入是空的,但没有填充。这种行为很奇怪,因为它适用于最初的第1-2章,然后它停止,在第10章结束时再次适用。

脚本代码:

$('#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>");
}
});
});

控制台终端当我选择初始章节输入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: 27

添加parseInt解决了问题。。。

这是因为循环还可以处理字符串比较;令人惊讶的";结果如下,因为评估是按每个字符进行的。。。喜欢对一些字符串进行排序。人类会认为这些是数字。。。通过编号为的计算机

最后,要注意使用的变量类型。

console.log("22" > "3") // false!!!

最新更新