2010-06-10 4 views
0

j'ai la fonction suivante:Suppression d'une option dans une liste <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 ; 

} 

avant des valeurs ajoutées avec

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 ; 

} 

maintenant, dans la fonction de suppression ne soustraient pas le prix. malgré cela, tous les travaux.

Quel est le problème avec ce terme?

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

merci à l'avance

Répondre

0

j'ai le problème, il était

si (document.getElementById ("warenkorbfeld"). Les options [ i] .value == "Salami")

options. valeur

pas

options.id

maintenant il fonctionne :-)

2

D'où vient la variable gesamtbetrag de? Vous en soustrayez, mais on dirait qu'il ne sera défini qu'après. Je pense que vous devrez peut-être ajouter

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

En haut de votre fonction.

Aussi, tenez compte des optimisations suivantes pour votre code:

  • vous n'avez pas besoin de la boucle for itérer sur les options (for (var i =0; i<=anzahl; i++), vous pouvez utiliser la propriété selectedIndex de l'élément de sélection à la place
  • .
  • utilisation select.remove() au lieu de select.options[i] = null.
  • Exploitez l'opérateur d'affectation de soustraction -= pour soustraire un numéro pour la variable.
  • Réduire getElementById recherche en stockant l'élément dans une variable à la place.
  • Vous pouvez comparer le selectedIndex à un index connu (par exemple sel.selectedIndex == 0) au lieu de comparer selectedOption.id == "Some string". Je ne l'ai pas fait cela ci-dessous parce que je ne sais pas vos index
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

je l'ai résolu, (option.value pas option.id) :-) merci Votre message a été Utile :) – Tyzak

Questions connexes