TheRat101: Syntax Fehler bei Weitergabe von Funktionsdaten an Javascript

Beitrag lesen

Inzwischen habe ich die Lösung gefunden.

Ich konnte dir leider nicht helfen,
würde dich aber trotzdem gerne bitten, die Lösung zu posten,
damit, falls jemand anderes auf ein ähnliches, gar gleiches, Problem trifft,
schon im Archiv auf die Lösung stoßen kann.

MfG
bubble

Oh ok sorry ;-) Entschuldigt die Verzögerung aber ich habe noch einen "Entfernen" Button angefügt.
Für die Profis unter euch wird es sicher kein Meisterwerk sein, aber ich bin glücklich damit :D

Also ich habe "on>k<lick" statt "on>c<lick" geschrieben was da schon mal zu einer Funktionslosigkeit geführt hat. (ich habe meinen Kopf gegen die Wand geschlagen als ich diesen dummen Fehler endlich gesehen habe)
Dann musste ich noch besser zuordnen welches Element ich eigentlich ansprechen möchte weil es da scheinbar Missverständnisse gab.

Hier noch einmal der volle funktionsfähige Code. Kann in dieser Form überall eingebaut werden.

In der PHP Datei als echo Ausgabe: (für Verwendung in HTML einfach die \ und PHP Befehle entfernen)

  
$echo = '  
  
<html><head><title>Test</title>  
<script language="javascript" type="text/javascript" src="javascript.js"></script>  
</head>  
  
  
  
<body>  
<form name="activation" action="seite" method="post">  
  
<ol id="riderlist"><li></li></ol>  
  
<a href="#" onclick="addrider(\'Vorname\', \'Nachname\')">test</a>  
  
  
<ol id="horselist"><li></li></ol>  
  
<a href="#" onclick="addhorse(\'Pferdename\')">test</a>  
  
</form>  
  
  
<script type="text/javascript">  
  
addriderNr = 0;  
addhorseNr = 0;  
addriderNri = 0;  
addhorseNri = 0;  
document.getElementById(\'horselist\').removeChild(document.getElementById(\'horselist\').firstChild);  
document.getElementById(\'riderlist\').removeChild(document.getElementById(\'riderlist\').firstChild);  
  
function winstart() {  
	for(var i = 0; i < 3; i++) {  
		addrider(\'Vorname\', \'Nachname\');  
		addhorse(\'Pferdename\');  
		}  
}  
  
window.onload=winstart();  
  
</script>  
</body></html>  
  
';  
  
  
echo $echo;  
  

Und der Javascript in der ausgelagerten Datei:

  
	function addrider(rider1, rider2) {  
		var newLi = document.createElement('li');  
		var newLiText = document.innerHTML = rider1+': <input class="loginput" name="rdlivname[]" type="text" size="10" maxlenght="40">&nbsp;&nbsp;'+rider2+': <input class="loginput" name="rdlinname[]" type="text" size="10" maxlenght="40">&nbsp;<a href="#" onclick="removeField(\'riderlist\', \'ridnr'+addriderNri+'\')">Entfernen</a>';  
		newLi.id = 'ridnr'+addriderNri;  
		document.getElementById('riderlist').appendChild(newLi);  
		document.getElementById('riderlist').getElementsByTagName('li')[addriderNr].innerHTML=newLiText;  
		addriderNr++;  
		addriderNri++;  
	}  
	  
	  
	  
	function addhorse(horsename) {  
		var newLi = document.createElement('li');  
		newLi.id = 'hrsnr'+addhorseNri;  
		var newLiText = document.innerHTML = horsename+': <input class="loginput" name="hrseliname[]" type="text" size="20" maxlenght="40">&nbsp;<a href="#" onclick="removeField(\'horselist\', \'hrsnr'+addhorseNri+'\')">Entfernen</a>';  
		document.getElementById('horselist').appendChild(newLi);  
		document.getElementById('horselist').getElementsByTagName('li')[addhorseNr].innerHTML=newLiText;  
		addhorseNr++;  
		addhorseNri++;  
	}  
  
	function removeField(ID, line) {  
		var element = document.getElementById(line);	  
		document.getElementById(line).remove(element);  
		  
		switch(ID) {  
			case 'riderlist':  
				addriderNr--;  
				break;  
			case 'horselist':  
				addhorseNr--;  
				break;  
			default:  
				alert('Unbekannter Fehler aufgetreten');  
				break;  
			}  
		}  

Kurze Erläuterung:
Es werden zwei Listen erstellt.
Wenn die Seite geladen wird werden von jeder Liste gleich mal drei Einträge vorgefertigt. Weitere können dann über den "test" Button hinzugefügt werden. Über Entfernen kann jeder Eintrag einzeln Entfernt werden.
In der auswertenden Datei ist jedoch dann zu beachten das bei "POST" leere Inhalte ausgegliedert werden, da der Zähler gelöschte Elemente nicht beachtet und so eine Reihenfolge im HTML Code von z.b. 1, 2, 4, 7, 8, 9, 10,.... entstehen kann.

Wie gesagt, nicht Perfekt aber tut was es soll. ;-) Ich hoffe ich konnte jemanden damit helfen.

Lg