Knoten in den dom-Baum einhängen
Jeena Paradies
- javascript
Hallo,
Ich versuche mich gerade wieder einmal an JavaScript, warum bekomme ich nur Fehler wenn ich dieses Script aufrufe?
http://jeenaparadies.net/t/bbcode-links-anhaengen.html
Grüße
Jeena Paradies
Ich versuche mich gerade wieder einmal an JavaScript, warum bekomme ich nur Fehler wenn ich dieses Script aufrufe?
Element main ist nicht direkter parent von Element bbcode. Deshalb gäbe es Fehler im Baum, wenn du es so einfügen würdest. Das führt zu der DOM-Exception. So geht es richtig:
<html>
<head>
<title>BBCode Links anhängen</title>
<script type="text/javascript">
[code lang=javascript]
function a() {
var b = document.createElement("a");
b.setAttribute("href", "javascript:insert('[b]', '[/b'])");
var tb = document.createTextNode('[b]');
b.appendChild(tb);
var br = document.getElementById("bbcode");
if (br.insertBefore) {
var bbc = document.getElementById("bbcode");
bbc.parentNode.insertBefore(b,bbc);
}
}
~~~</script>
</head>
<body onload="a();">
<div id="main">
<form action="bbcode-links-anhaengen.html" id="entryform">
<p>Wie benutze ich <a id='bbcode' onclick="learnbb('http://jlog.dev'); return false;" href='http://jlog.dev/learn\_bb.php'>BBcode</a>?
<br id='bbcode' />
<textarea rows='8' cols='30' name='content'></textarea>
</p>
</form>
</div>
</body>
</html>
[/code]
Hallo,
Element main ist nicht direkter parent von Element bbcode.
Ach das muss immer das Elternelement sein, da sieht man mal wieder wie wenig Ahnung ich von JS habe, aber ich lerne. Vielen Dank für die Info.
Grüße
Jeena Paradies
Hallo,
eine Frage noch:
1|
var br = document.getElementById("bbcode");
2|if (br.insertBefore) {
3|var bbc = document.getElementById("bbcode");
4|bbc.parentNode.insertBefore(b,bbc);
5|}
Warum muss ich das document.getElementById("bbcode"); in Zeile 3 noch einmal bbc zuweisen, wenn ich es schon in Zeile 1 br zugewiesen habe?
Grüße
Jeena Paradies
Warum muss ich das
document.getElementById("bbcode");in Zeile 3 noch einmalbbczuweisen, wenn ich es schon in Zeile 1brzugewiesen habe?
Musst du nicht. Ich habe es nur übersehen, dass du das Element schon geholt hast.
Hallo,
Musst du nicht. Ich habe es nur übersehen, dass du das Element schon geholt hast.
Ach super ok vielen Dank noch mal jetzt funktioniert es wunderbar :-)
Grüße
Jeena Paradies
Hallo,
Hm es klappt fast, aber irgendwie nicht ganz und ich finde nicht heraus warum. Eigentlich wollte ich so etwas erreichen:
Wie benutze ich BBcode? [b]
aber es wird vor dem Link eingefügt:
Wie benutze ich [b]BBcode?
siehe: http://jeenaparadies.net/t/bbcode-links-anhaengen2.html
Grüße
Jeena Paradies
Tag Jeena.
Hm es klappt fast, aber irgendwie nicht ganz und ich finde nicht heraus warum.
Du hast für den Link zur BBCode-Erklärung die gleiche ID vergeben wie für das br-Element.
Siechfred
Hallo,
Du hast für den Link zur BBCode-Erklärung die gleiche ID vergeben wie für das br-Element.
Man wie blöd kann man sein?
Grüße
Jeena Paradies
Tag Jeena.
Ich versuche mich gerade wieder einmal an JavaScript, warum bekomme ich nur Fehler wenn ich dieses Script aufrufe?
http://jeenaparadies.net/t/bbcode-links-anhaengen.html
Das liegt daran, dass "bbcode" kein Kind von "main" ist, sondern ein Enkel. Elternelement deines br ist jedoch das (noch) identitätslose p-Element. Gib diesem eine ID und schreibe
document.getElementById("id_des_p").insertBefore(b, document.getElementById("bbcode"));
So müsste es gehen.
Siechfred
Gib diesem eine ID
Das ist nicht nötig. parentNode existiert.
Tag Anonymous.
Das ist nicht nötig. parentNode existiert.
Ja, aber meine Variante funktioniert ebenso wie deine. Ist halt wie mit Rom ... ;-)
Siechfred
Hallo,
Ja, aber meine Variante funktioniert ebenso wie deine. Ist halt wie mit Rom ... ;-)
Nur wenn irgendwann einmal das Element mit der ID bbcode wo anders ist habe ich das Problem, dass ich alles wieder ändern muss, aber auf jeden Fall habe ich jetzt kapiert woran es lag, vielen Dank dafür.
Grüße
Jeena Paradies