OPTION und JS Problem

CyberMax

Mitglied
Hallo Zusammen,

Ich habe ein OPTION Feld mit ca. 40 Einträgen zum auswählen. Und bei einem bestimmten Eintrag (Andere:) soll per JS ein ein Eintrag in einem SPAN Feld geschrieben werden... mein JS sieht wie folgt aus:

PHP:
function checkProduct(){
	var ar_text= new Array();
	
	ar_text["Andere:"]="<input type=\"text\" name=\"Produktname\" value=\"\" class=\"texts\"><br>";
	ar_text[""]="";
	
	var select_val=document.regform.Produkt.options[document.regform.Produkt.selectedIndex].value;
	document.getElementById('Produkteingeben').innerHTML=ar_text[select_val];
}

hier der HTML und PHP Bereich:
PHP:
<tr> 
		<td class="texts">Produkt auswählen:</td>
		<td class="texts">
		<select name="Produkt" class="texts" onChange="checkProduct();"> 
			<option>Wählen Sie ihr Produkt</option>
			<option value=""></option>
			<option value="Andere:" class="textr">Andere/Nicht aufgeführtes Produkt</option>
			<option value=""></option>
			<?php		
			$result = mysql_query("SELECT * FROM artikel WHERE nr LIKE 'NR%' ORDER BY name");
			while($row = mysql_fetch_array($result)) {
				echo "<option value='".$row["art"]."'>";
				echo $row["art"];
				echo "</option>\n";
			}
			?> </select>*</td>
	</tr>
                     <tr> 
		<td class="texts">&nbsp;</td>
		<td class="texts"><p class="texts" id="Produkteingeben">&nbsp;</p></td>
	</tr>

es klappt eigentlich fast alles, nur das ich bei der Auswahl (Ausser Andere:) ein undefined zurück bekomme. Was ja auch richtig ist. Nur ich will das undefined nicht :)... was oder wie kann ich das umgehen?

Vielen Dank im voraus...
CyberMax
 
Hallo....

das Problem ist, dass du keine gültigen Array-Schlüssel verwendest.
Eine leere Zeichenkette ist als Arrayschlüssel nicht legal... somit wird das Array-Element mit diesem Schlüssel nicht gefunden und es wird ein "undefined" ausgegeben.

Lass am besten dieses Array-Element mit der leeren Zeichenkette weg, und prüfe stattdessen, ob ein Array-Element existiert, welches als Schlüssel den Wert der ausgewählten <option> besitzt.
Wird ein solches gefunden, wird es ausgegeben, andernfalls nix.

Das ginge bspw. so:
Code:
document.getElementById('Produkteingeben').innerHTML=(ar_text[select_val])?ar_text[select_val]:'';
(anstatt der letzten Zeile in deiner Funktion)

Übrigens ist "Andere:" ebenfalls kein gültiger Name für einen Arrayschlüssel.
Lt. Javascript sind dort nur Buchstaben, Ziffern und der Unterstrich erlaubt, wobei das erste Zeichen ein Buchstabe sein muss.
Du machst deine Skripte weitaus weniger fehleranfällig, wenn du in Zukunft auf diese Konvention achtest(und sie auch bei Variablen-und Funktionsnamen anwendest)... das aber nur als Tipp am Rande :)

BTW:Hier im Javascript-Forum kann man nicht gezwungenermassen davon ausgehen, dass sich der Leser auch mit PHP auskennt... es wäre daher in Zukunft besser, wenn du nicht deinen PHP-Code, sondern nur den geparsten HTML-Output postest... mehr ist für JS nicht von Interesse und verwirrt im Zweifelsfall den Betrachter ;)
 

Neue Beiträge

Zurück