我有以下功能:
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;
提前致谢
答案 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
现在可行: - )