2010-06-10 55 views
0

我有以下功能:刪除其中一個選項列表<select>

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

我有問題,這是

如果(的document.getElementById(「warenkorbfeld」)。選擇[ i] .value ==「Salami」)

選項。

options.id

現在的作品:-)

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

我解決了這個問題,(option.value不option.id):-) 感謝您的留言有用:) – Tyzak 2010-06-10 15:41:28