【发布时间】:2012-08-02 13:12:19
【问题描述】:
我正在尝试更新页面上所有选择列表的选项,并实施了在 Get list of all `input` objects using JavaScript, without accessing a `form` object 和其他页面上找到的解决方案。
这在一定程度上有效,但只有在触发 javascript 之后出现的选择列表才会更新,而我需要它们全部完成,无论它们相对于触发选择的位置如何。
这是我所拥有的简化版本:
function chooseBon(id, value) {
var bonbonsAmount = 12;
var bonbonsCurrent = 0;
var bonbonsCount = 4;
var inputs, index;
// get all the select lists
inputs = document.getElementsByTagName('select');
// loop through all the lists
for (index = 0; index < inputs.length; ++index) {
// First disable all options
for (j = 0; j<=bonbonsAmount; ++j) {
inputs[index].options[j].disabled="disabled";
}
// Then re-enable the ones we still need
for (j = 0; j<=(bonbonsAmount - bonbonsCurrent); ++j) {
inputs[index].options[j].disabled="";
}
// add up the no of chocs selected so we know how many options to re-enabled above
bonbonsCurrent += inputs[index].selectedIndex;
}
我是一名被认可的新手,并且正在为另一个电子商务平台改编脚本,因此在某些领域我感到手足无措,因此请随时提出其他建议。
【问题讨论】:
-
您好,是的,我有 5 到 20 个选择列表,每个列表都从 1 到 12 的选项开始。每个选项都适用于巧克力,他们最多可以选择 12 个,但可以任意组合 - 因此,如果他们从一个选择列表中选择 4 个,则所有其他选择列表应更新为仅启用选项 1-8。如果他们从下一个列表中选择 2,则每个列表将限制为 1-6,依此类推。上面的脚本工作正常,但只在选择了选项的那个之后更新选择列表,页面上之前的那些没有更新。
标签: javascript loops getelementsbytagname