• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

insertBefore Problem

Status
Für weitere Antworten geschlossen.

wolf360

Neues Mitglied
Hallo ich hab ein Problem mit dem Befehl insertBefore:

HTML:
function Zeigen(){
  var auswahl = document.form.aktion.value;
if(auswahl=="aendern"){
 
    var neu_input = document.createElement("input");
    var t = document.form.appendChild(neu_input);
    document.form.insertBefore(t, document.getElementById("hier"));
 
  alert("aendern");
}else{
if(auswahl=="loeschen"){
 
    alert("loeschen");
 
    }else{
 
    alert("eintrag");
}
}
 
}
 
</script>
<form method="post" name="form" action="test1.php">
     <select  name="aktion" onchange="Zeigen()">
      <option value="aendern">&Auml;ndern</option>
      <option value="loeschen">L&ouml;schen</option>
      <option value="eintragen">Eintrag</option>
     </select>
    <input id="hier" type="text" name="name" /><br>
    <textarea name="text"></textarea>
    <input type="submit" name="submitform">
</form>

Edit: gleich noch ne frage, hab dem inputfeld gleich mittels setAttribute("type", "password"); den Type zugewießen, aber das fügt er irgendwie erst nach zwei mal ändern auswählen hinzu?

bei Opera klappt das alles, blos der IE macht mal wieder was er will, er setzt das neue Inputfeld ans ende des Formular, also nach dem submitbutton?!

gruß wolf360
 
Zuletzt bearbeitet:
insertBefore() fügt einen Knoten genau wie appendChild() in ein Dokument ein, nur an einer bestimmten Stelle.
 
Code:
var neu_input = document.createElement("input");
neu_input.type = "password";
document.form.insertBefore(neu_input, document.getElementById("hier"));
 
ich find einfach keine Fehler:

PHP:
function Zeigen(){
  var auswahl = document.form.aktion.value;
if(auswahl=="aendern"){
	
	var neu_input = document.createElement("input");
	neu_input.type = "password";
	document.form.insertBefore(neu_input, document.getElementById("hier"));
	
  alert("aendern");
}else{
if(auswahl=="loeschen"){

	alert("loeschen");
	
	}else{

	alert("eintrag");
}
}
		
}

</script>
<form method="post" name="form" action="test1.php">
    <select  name="aktion" onchange="Zeigen()">
	  <option value="aendern">&Auml;ndern</option>
	  <option value="loeschen">L&ouml;schen</option>
	  <option value="eintragen">Eintrag</option>
	 </select>
	<input id="hier" type="text" name="name" /><br>
	<textarea name="text"></textarea>
	<input type="submit" name="submitform">

</form>
 
Mal so herum probiert?
Code:
var neu_input = document.createElement("input");
    neu_input.type = "password";
    var dort_davor = document.getElementById("hier");
    dort_davor.parentNode.insertBefore(neu_input, dort_davor);
 
Ich habe leider keinen IE da, aber ich sehe nicht was den IE daran hindern sollte, das auszuführen. Schmeiß mal name="" für <form> raus und versuch nur die alert()s ausführen zu lassen.
 
okey also jetzt funktioniert es:

HTML:
<script>
function Zeigen(){
  var auswahl = document.formular.aktion.value;
if(auswahl=="aendern"){
	
	var neu_input = document.createElement("input");
	neu_input.type = "password";
	document.formular.insertBefore(neu_input, document.getElementById("hier"));
	
  alert("aendern");
}else{
if(auswahl=="loeschen"){

	alert("loeschen");
	
	}else{

	alert("eintrag");
}
}
		
}

</script>


<?php
<form method="post" name="formular">
    <select onchange="Zeigen()" name="aktion">
	  <option value="aendern">&Auml;ndern</option>
	  <option value="loeschen">L&ouml;schen</option>
	  <option value="eintragen">Eintrag</option>
	 </select>
	<input id="hier" type="submit" name="submitform">
</form>
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben