【问题标题】:Javascript removing <option> from drop-down by idJavascript 按 id 从下拉列表中删除 <option>
【发布时间】: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。

事实证明,我确实需要删除检测额外选项的逻辑——我只是不明白我被告知了什么,并且不得不通过艰苦的方式学习。

【问题讨论】:

    标签: javascript removechild


    【解决方案1】:

    你的循环条件是

    ...; i < n;...
    

    i = optionCount-1n = arrayTotal.length。当数组元素的数量较少时,您永远不会进入循环体(这是您拥有 removeChild 脚本的地方。

    【讨论】:

    • 这是有意的。 optionCount - 1 只有在用户在初始输入后更改它时才会变得小于 arrayTotal.length。目标是永远不需要此功能,但可以防止用户错误
    • 你能把你的代码放在一个小提琴中吗 - 猜测发生了什么有点棘手。干杯!
    • 我添加了一个小提琴。链接在正文中。
    猜你喜欢
    • 2021-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-17
    相关资源
    最近更新 更多