Funktion mit .getElementById für Firefox

Crav3X

Erfahrenes Mitglied
Hallo,

ich bau grad eine etwas ältere Funktion um, um sie auch im Firefox lauffähig zu machen...
Im IE läuft es so wie es jetzt ist... im FF leider nicht...

was müsste ich noch anpassen!?

Code:
function TakeMitarbeiter(id, vn, nn)//##################################
			{
var i;
id = id;
nachn = unescape(nn);
mitarbeiter = vn+"."+nachn;
var test = document.getElementById("Sel_Teilnehmer").value;
	alert(test);
	alert(document.getElementById("Sel_Teilnehmer").length);
				
	alert(document.getElementsByName("Sel_Teilnehmer")[0].options[1]);
				
		for (i=0 ; i < document.getElementById("Sel_Teilnehmer").length ; i++)
		{
	if (('M' + mitarbeiter[id]) == document.getElementById("Sel_Teilnehmer").value)
			{
				return;
			}
		}
				
		var NewEntry = document.createElement("OPTION");
				
				
		NewEntry.value = 'M' + id;
		NewEntry.text = mitarbeiter;
								
		document.getElementById("Sel_Teilnehmer").add (NewEntry);
		Teilnehmer.push ('M' + mitarbeiter[id+1]);
				
			}

Es wird der Funktion eine Benutzer ID, Benutzer Vorname und der Nachname übergeben...
 
Was genau funktioniert denn nicht, wie lauten die Fehlermeldungen im FF?

Hast du bedacht, dass getElementById() nur dafür vorgesehen ist, Elemente anhand ihrer ID zu finden(dem IE reicht dort auch das name-Attribut, was jedoch nicht korrekt ist) .
 
Also Firebug gibt das hier aus:

Code:
uncaught exception: [Exception... "Not enough arguments [nsIDOMHTMLSelectElement.add]" nsresult: "0x80570001 
(NS_ERROR_XPC_NOT_ENOUGH_ARGS)" 
location: "JS frame :: http://localhost/termin.php?id=15020 :: TakeMitarbeiter :: line 274" data: no]


Im IE funktionierts jeweils ohne Fehlermeldung... hmm...
 
Nochmals:
Hast du bedacht, dass getElementById() nur dafür vorgesehen ist, Elemente anhand ihrer ID zu finden(dem IE reicht dort auch das name-Attribut, was jedoch nicht korrekt ist) .

Dort geht einiges durcheinander, einmal greifst du per getElementById(), und ein anderes mal per getElementsByName() zu.

Was die Fehlermeldung betrifft, add() erwartet als 2.Argument einen Verweis auf das <option>-Elementobjekt, vor dem die neue Option eingefügt werden soll(oder null, falls sie ans Ende gestellt werden soll)...dieses 2.Argument fehlt bei dir, wie auch die Fehlermeldung besagt.
 
Ja das mit dem getElementByID oder Name lag an unterschiedlichen ausgaben die ich bekommen habe... Räume aber grade mal auf...

Mit dem zweite Argument funktioniert es auch...
... manchmal sollte ich mich echt schämen :(


Vielen Dank für die Hilfe.
 
Oh,

naja... im FF funktioniert es... aber nun im IE nicht mehr :confused:

Code:
document.getElementById("Sel_Teilnehmer").add (NewEntry, null);

Langsam gehts an den Punkt wo man das echt alles im Müll schmeißen will^^

Deine Lösungsalternative sieht aber auch nicht schlecht aus... Sollte ich es damit mal versuchen bevor ich hier ein nerven zusammen bruch bekomme?

Bin leider nicht so gewandt in Javascript
 
Deine Lösungsalternative sieht aber auch nicht schlecht aus... Sollte ich es damit mal versuchen bevor ich hier ein nerven zusammen bruch bekomme?

Unbedingt :)

Problem:
Beim IE wird als(optionales) 2. Argument der Index erwartet, an dessen Position die Option eingefügt werden soll:
http://msdn.microsoft.com/en-us/library/ms535921(VS.85).aspx

Im FF hingegen das bereits von mir Genannte entsprechend der W3C-Spezifikation :
http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/level-one-html.html#ID-94282980

Mit der alten Methode hast du diese Kompatibilitätsprobleme nicht, die hat schon vor 10 Jahren problemlos funktioniert, und tuts immer noch :)
 
Ja dann versuch ichs mal....

... oh könntest du mir vllt bei der Anpassung helfen?

Ich habe ja die Variable "mitarbeiter" die in die Selectbox angefügt werden soll...

Also
Code:
function TakeMitarbeiter(id, vn, nn)//##################################
			{
				var i;
				id = id;
				nachn = unescape(nn);
				mitarbeiter = vn+"."+nachn;
				
NeuerEintrag = new Option(document.Frm_Bla.mitarbeiter.value, document.Frm_Bla.mitarbeiter.value, false, true);
  document.Frm_Bla.Sel_Teilnehmer.options[document.Frm_Bla.Sel_Teilnehmer.length] = NeuerEintrag;
  document.Frm_Bla.mitarbeiter.value = id;

				
			}

wirds wohl nicht funktionieren...

Das Formular heißt bei mir "Frm_Bla"
Die Selectbox "Sel_Teilnehmer"

:confused:
 
Haut doch schon fast hin :)

Code:
<script type="text/javascript">
<!--
function TakeMitarbeiter(id, vn, nn)
{
  mitarbeiter = vn+"."+nn;
  NeuerEintrag = new Option(mitarbeiter, mitarbeiter, false, true);
  document.Frm_Bla.Sel_Teilnehmer.options[document.Frm_Bla.Sel_Teilnehmer.options.length] = NeuerEintrag;
}
//-->
</script>


<form name="Frm_Bla">
<select name="Sel_Teilnehmer">
</select>
<br /><button type="button" onclick="TakeMitarbeiter(4711, 'Hans','Wurst');this.disabled=true">
        <b>TakeMitarbeiter(4711, 'Hans','Wurst')</b>
      </button>
<br /><button type="button" onclick="TakeMitarbeiter(0815, 'Susi','Sorglos');this.disabled=true">
        <b>TakeMitarbeiter(0815, 'Susi','Sorglos')</b>
      </button>
</form>
 
Zurück