繁体   English   中英

删除一个选项 <select>名单

[英]Deleting an option in a <select> list

我有以下功能:

function delete_auswahl()    
{

    var anzahl =document.getElementById ("warenkorbfeld").length ;

    for (var i =0; i<=anzahl; i++)
    {
        if (document.getElementById ("warenkorbfeld").options[i].selected==true)
        {



            if (document.getElementById ("warenkorbfeld").options[i].id == "Margherita" )
                gesamtbetrag = gesamtbetrag - 4;

            if (document.getElementById ("warenkorbfeld").options[i].id=="Salami"  )
                gesamtbetrag = gesamtbetrag - 4.50;

            if (document.getElementById ("warenkorbfeld").options[i].id=="Hawaii"  )
                gesamtbetrag = gesamtbetrag - 5.50;


            document.getElementById ("warenkorbfeld").options[i]=null;
            i--;// auf der gleichen stelle bleiben, da dass nächste feld nachrückt

        }
    }

    document.getElementById('gesamtbetrag').innerHTML=gesamtbetrag ;

}

在我添加价值之前

function hinzu (pizza)
{
    NeuerEintrag = new Option(pizza, pizza, false, false);
    document.getElementById("warenkorbfeld").options[document.getElementById("warenkorbfeld").length] = NeuerEintrag ;

    if (pizza=="Margherita")
    {
        gesamtbetrag = gesamtbetrag + 4;
    }

    if (pizza=="Salami")
    {
        gesamtbetrag = gesamtbetrag + 4.50;
    }

    if (pizza=="Hawaii")
    {
        gesamtbetrag = gesamtbetrag + 5.50;
    }

    document.getElementById('gesamtbetrag').innerHTML=gesamtbetrag ;

}

现在,在删除功能中不减去价格。 尽管如此,所有的作品。

这个词有什么问题?

if (document.getElementById ("warenkorbfeld").options[i].id == "Margherita" )
                gesamtbetrag = gesamtbetrag - 4;

提前致谢

gesamtbetrag变量来自哪里? 您正在从中减去,但看起来直到之后才被定义。 我认为您可能需要添加

var gesamtbetrag = document.getElementById('gesamtbetrag').innerHTML

在功能的顶部。

另外,请考虑以下针对代码的优化:

  • 您不需要for循环来遍历选项( for (var i =0; i<=anzahl; i++) ,可以改为使用select元素的selectedIndex属性。
  • 使用select.remove()而不是select.options[i] = null
  • 使用减法赋值运算符-=为变量减去一个数字。
  • 通过将元素存储在变量中来减少getElementById查找。
  • 您可以将selectedIndex与已知索引进行比较(例如sel.selectedIndex == 0 ),而不是将selectedOption.id == "Some string"进行比较。 我在下面没有这样做,因为我不知道您的索引
function delete_auswahl()    
{
    var gesamtbetrag = document.getElementById('gesamtbetrag').innerHTML;
    var selEl = document.getElementById("warenkorbfeld");
    var opt   = selEl.options[selEl.selectedIndex];

    if (opt.id == "Margherita")
        gesamtbetrag -= 4;
    else if (opt.id=="Salami")
        gesamtbetrag -= 4.50;
    else if (opt.id=="Hawaii")
        gesamtbetrag -= 5.50;

    selEl.remove(selEl.selectedIndex);
}

我有问题,那是

如果(document.getElementById(“ warenkorbfeld”)。options [i] .value ==“ Salami”)

选项。

options.id

现在它的工作原理:-)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM