【发布时间】:2015-08-02 04:09:37
【问题描述】:
我正在开发一个动态生成项目下拉列表的应用程序。生成的 ID 范围从“1”到用户输入的整数(0 保留用于硬编码的“选择选项”)。如果用户改变主意并输入较小的值,我希望 javascript 动态删除选项。到目前为止,一切都适用于脚本,但我似乎无法完成这项工作。以下是我遇到困难的部分......顺便说一句,在我可以构建我的实用程序中更有趣的部分之前的最后一部分。
var itemSelect = document.getElementById("itemSelector");
var optionCount = itemSelect.childElementCount;
for (i = optionCount-1, n = arrayTotal.length; i < n; i++)
{
var itemSelect = document.getElementById("itemSelector");
var option = document.createElement("option");
var optionCount = itemSelect.childElementCount;
if (optionCount - 1 > totalItems)
{
for (j = optionCount, o = totalItems; o < j; j--)
{
var trash = document.getElementById("itemSelector");
trash.removeChild(trash.childNodes[j]);
}
}
else if (optionCount <= totalItems)
{
option.innerHTML = "<option> Item number"+(arrayTotal[i])+"</option>";
option.value = arrayTotal[i];
option.id = i;
itemSelect.appendChild(option);
}
}
我已经构建了一些调试工具来检查某些值。 arrayTotal[] 正确地从它的填充函数接收项目,并按预期动态调整大小。它始终具有与 totalItems 相同的值。
optionCount 正确地使用用户输入的最大值填充下拉列表,但是如果用户输入较小的值,则应该删除额外选项的部分不执行任何操作。我已经阅读了很多类似的问题并尝试了很多不同的方法,但我完全不知所措。我如何尝试实现这一点有什么特别的错误吗?
另外,为什么不在“for”循环之外和内部都声明我在这里所做的两个变量会破坏一切,是否有明显的原因?我还是 javascript 的新手,但这似乎很奇怪。
http://jsfiddle.net/CAlbano/s4mzssm1/ 是一个工作小提琴的链接。我已经包含了整个脚本的所有工作。相关部分位于底部附近,但这样您就可以看到它在做什么。在 canvas 元素上运行的三个输出是 arrayTotal[] 的最后一个单元格的值、totalItems 的值和 optionCount-1 的值。我想要发生的是,如果 optionCount 变得大于 totalItems,则从该列表中删除最后一个孩子,直到 optionCount == totalItems。
事实证明,我确实需要删除检测额外选项的逻辑——我只是不明白我被告知了什么,并且不得不通过艰苦的方式学习。
【问题讨论】: