删除<select>列表中的选项</select>

时间:2010-06-10 10:45:12

标签: javascript

我有以下功能:

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;

提前致谢

2 个答案:

答案 0 :(得分:2)

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);
}

答案 1 :(得分:0)

我遇到了问题,那是

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

选项。的

不是

options.id

现在可行: - )