有没有人有任何解决方案来提高删除/添加<选项>时的速度来自< select>当它有60k +元素?
我有一个带有两个< select>的表单,让我们称之为selectA和selectB。我想要在更改selectA时更改selectB的值。喜欢(代码不起作用,只是为了想法):
如果selectA = option1
然后选择B.options = [opt1_1,opt1_2,opt1_3,...]
否则如果selectA = option2
然后selectB.options = [opt2_1,opt2_2,opt2_3,...]
...
我有一个(非常巨大的)变量,它给出了与selectA值相关的selectB选项列表。
我已经找到了很多关于这种事情的例子,它适用于小例子。现在,我有类似的话:
$(document).ready(function(){
$(" #selectB")。html("<选项值='' slected ='选择'>选择SelectA优先< /选项&gt ;&#34);
$(" #selectA")。change(function(){
var val = $(this).val();
var options = // ...使用所有<选项>< / options>生成的字符串取决于$ val
$("#selectB&#34)的HTML(选项)。
});
});
这是一团糟,因为selectB是一个IPv4列表,可以包含一个完整的/ 16。这就是要处理的60k +元素(ouch ^^)。这就是为什么我不想在选择中选择所有选项,而是选择"预先选择"用selectA然后"子选择"用selectB。
我希望最初在HTML表单中包含所有可能的IP,原因如下:即使未启用JS,用户也必须能够选择一个IP(服务器检查selectA和selectB的选择是否对应)。并且只有在启用JS的情况下,我才会从selectB中删除所有内容,并在selectA更改时仅添加我想要的值。所以你可能会说,无论如何没有JS的用户都可以选择一个选项,而不加载1GB + RAM的选项,并等待5-10分钟来加载每个选项,但我也希望页面能够正常工作只有少数选项可以像1k一样显示。
我承认我很惊讶我的浏览器(FF)很快处理页面的创建。但是当JS删除所有选项时,一切都冻结了:
$(" #selectB")。html("<选项值='' slected ='选择'>选择SelectA优先< /选项&gt ;&#34);
我设法调试的是,浏览器需要卸载/删除每个选项需要花费时间。实际上创建它们并不是那么慢。
所以我想知道是否有比我现在正在做的更快的解决方案。如何加快删除所有<选项>在selectB?
任何建议都欢迎来自JS的简单更改,以便将HTML的整个结构更改为不使用< select>但别的东西(我不知道)。