Selectbox value mit String vergleichen in der If-Bedingung

enrix

Mitglied
Hallo Ich habe ein Problem bei einer If-Anweisung. In der Bedingung wird geprüft ob der selektierte Wert einer Selectbox gleich der gewünschten Vorgabe entspricht. Dazu fange ich den selektierten Wert über das window.event ab.

PHP:
    evt = (evt) ? evt : ((window.event) ? window.event : null);
    if (evt) {
        // equalize W3C/IE models to get event target reference
        var elem = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
        if (elem) {
        	try {
                if (elem.selectedIndex > 0) {              	
                    var obj =elem.options[elem.selectedIndex].value;      // an dieser Stelle wird die Variable obj mit dem value der Selectbox gefüllt             
                }	
            }
            catch(e) {
                var msg = (typeof e == "string") ? e : ((e.message) ? e.message : "Unknown Error");
                alert("Unable to get XML data:\n" + msg);
                return;
            }
        }
    }

Nun wollte ich wie oben erwähnt eine If-Bedingung setzen

PHP:
                                 if("Loesung"==obj){
			
				}//end if

Das funktioniert leider im Internet Explorer nicht aber in safari und firefox. Ein alert('elem.options[elem.selectedIndex].value'); im Internet Explorer ist Zeichenlos also leer.
Wie könnte man dieses Problem ausschalten?
beste Grüße
 
es soll eine selectbox mit optionen gefüllt werden. jedoch sind diese Optionen abhängig davon, was der benutzer zuvor an einer anderen selectbox gewählt hat.
daher übergebe ich den wert der ersten selectbox mit dem event-objekt. Die Funktion sendRequest(event);" ist dabei eine eigene.

Im HTML-Formular sieht das so aus:

HTML:
       <select id="NL" onchange="sendRequest(event);" size='1'>
	<option value='A'>A</option>
                     <option value='B'>B</option>
       </select>

Die Funktion sendRequest(event); liegt in einer Javascript-datei
und ist folgendermaßen implementiert:

PHP:
function sendRequest(evt){	
	req=getXMLHttpRequest();
	
	if(req){
		req.onreadystatechange = function() {	
			
		evt = (evt) ? evt : ((window.event) ? window.event : null);
                                           if (evt) {
                                               var elem = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
                                               if (elem) {
        	                             try {
                                                      if (elem.selectedIndex > 0) {              	
                                                        setzeOptionen(elem.options[elem.selectedIndex].value);                  
                                                       }	
                                                   }
                                                   catch(e) {
                                                        var msg = (typeof e == "string") ? e : ((e.message) ? e.message : "Unknown Error");
                                                        alert("Unable to get XML data:\n" + msg);
                                                        return;
                                                   }
                                                }
                                              }
			
		}				
		req.open("get","Datenbank/test.xml",true);
		req.setRequestHeader("Content-Type","application/x-www-form-urlencoded");		
		req.send(null);
	}// end of if(req)		
}

Das wichtige ist die Funktion setzeOptionen. Diese soll das selektierte Ergebnis nun weiterleiten un die neue Selectbox entsprechend füllen.

PHP:
function setzeOptionen(evt){  
	if(xmlConfig()){           
        var ausgabe =document.getElementById("seb");            			     
		var list_T = xmlDOM.getElementsByTagName("T");
		for (var iNode = 0; iNode < list_T.length; iNode++) {	
			var nl=list_T[Node].getElementsByTagName("nl");
			for(var i=0;i<nl.length;i++){
				
				if(nl[i].firstChild.nodeValue==evt) {   //hier hat der IE ein Problem
					
					var sb=list_T[iNode].getElementsByTagName("sb");
					for(var ii=0; ii<sb.length;ii++){
						
						var jp =sb[ii].getElementsByTagName('jp')[0];
						var betrag =sb[ii].getElementsByTagName('betrag')[0];
						var value1= betrag.firstChild.nodeValue+' '+jp.firstChild.nodeValue; 
      					ausgabe.options[ausgabe.options.length] = new Option(betrag.firstChild.nodeValue,value1);	 
					}//end of for
				}//end if
				
			}//end of for
					
		}//end of for					
						      		  					
     }//end of if	  	
}

Hier tritt nun das Problem auf. An der Stelle
Code:
if(nl[i].firstChild.nodeValue==evt)
macht der Internet Explorer nicht mit. An dieser stelle wird ein xml-knoteneintrag gegen den selektierten wert des benutzers geprüft. Ein alert(evt) bzw alert(elem.options[elem.selectedIndex].value); zeigt jedoch, dass die selektierte option leer ist. D.h sie nimmt weder den Wert A noch B an. Anders ist es in Safari oder firefox. bei diesen browsern funktioniert es. Scheint als gäbe es ein Problem an der stelle

PHP:
setzeOptionen(elem.options[elem.selectedIndex].value);

vermutlich hat der IE ein Problem mit dem Ausdruck in der Klammer
 
Ich empfehle den etwas anderen Aufruf:
onchange="Funktionsname(this.form.NL.options[this.form.NL.selectedIndex].value)"

Damit wird der aktuell gewaehlte Wert uebergeben. In der Funktion dann einfach den Wert pruefen.
 

Neue Beiträge

Zurück