AJAX - Neue Tags einfügen
Artis
- javascript
Hallo zusammen.
Ich hab schon versucht über die Suche was zu finden, wusste jedoch nicht wonach ich genau suchen soll.
Also mein Problem:
Ich möchte mit Ajax neue area in den map Tag einfügen. Wie ich mittels Ajax Text in die Seite einfügen kann weiß ich, aber geht das auch mit neuen Elementen? Man hat mir mal gesagt das würde gehen.
Quelltext - index.php:
<map id="map" name="map"> </map>
Durch eine andere PHP werden die area generiert. Diese ausgabe wird dann mit Ajax in eine Variable in der index.php geschrieben und soll dann als Element/Tag als child in map eingefügt werden.
ich hab das mit verschiedenen Scripten versucht:
document.getElementById("map").firstChild.innerHTML = variable;
document.getElementById("map").firstChild.data = variable;
document.getElementById("map").appendChild(variable);
Aber nichts hat funktioniert. Vielleicht kann mir ja jemand helfen. Wäre klasse
hi,
Durch eine andere PHP werden die area generiert. Diese ausgabe wird dann mit Ajax in eine Variable in der index.php geschrieben und soll dann als Element/Tag als child in map eingefügt werden.
Also lässt du die text/plain zurückliefern - oder text/xml?
ich hab das mit verschiedenen Scripten versucht:
document.getElementById("map").firstChild.innerHTML = variable;
document.getElementById("map").firstChild.data = variable;
document.getElementById("map").appendChild(variable);
document.getElementById("map").innerHTML += "<area ...>";
sollte für reinen Text jedenfalls funktionieren.
gruß,
wahsaga
es ist text/plain, weil ich nicht weiß ob es mit:
<?xml version="1.0" ?> <root><area></root>
funktioniert.
Mit innerHTML += "<area ...>" funktioniert in kombi mit ajax scheinbar nicht. Das einzige was er mir als Fehler für Javascript gibt ist: Kein Element gefunden.
Ich habs aber mal mit "abc" anstelle von "<area>" versucht und "abc" hat er hingeschrieben. Kann man denn irgendwie sehen wie der Quelltext aussieht nachdem man Ajax benutzt hat? Wahrscheinlich nicht. Denn sonst wäre es ja kein Problem den Fehler zu finden. Dann wüsste man ob er das auch einträgt.
hi,
Kann man denn irgendwie sehen wie der Quelltext aussieht nachdem man Ajax benutzt hat? Wahrscheinlich nicht.
Was meinst du - wie die Rückgabe deines XMLHTTPRequests aussah?
Die steht doch in der Eigenschaft responseText. (Aber die müsstest du doch sowieso schon kennen, wenn du bereits versucht hast sie weiter zu verarbeiten?)
gruß,
wahsaga
Jap, das ist auch nicht das problem. Da steht alles drin was ich übergeben habe. Und das kann ich auch sehen.
Was ich aber meine ist, das ich gerne den gesamten Quelltext meiner index.php sehen möchte nachdem der inhalt eingetragen wurde. Damit ich sehen kann ob er auch wirklich genau an die stelle eingetragen wurde wo ich es will. Oder ob es halt nicht gemacht wurde und genau da der Fehler ist... sonst komme ich keinen Schritt weiter.
Es mag sein das 2 verschiedene Dinge sind die nicht stimmen und es gibt 10 möglichkeiten. Wenn ich sehen könnte was nicht stimmt könnte ich es vielleicht auf 3 oder 4 Möglichkeiten begrenzen. Aber so wie es momentan ist hab ich nicht mal nen Anhaltspunkt was nicht stimmen kann :(
hi,
Was ich aber meine ist, das ich gerne den gesamten Quelltext meiner index.php sehen möchte nachdem der inhalt eingetragen wurde.
Na dann lass dir doch innerHTML von bspw. body zur Kontrolle ausgeben.
Ausserdem gibt es im Firefox noch so ein schönes Tool namens DOM Inspector ...
gruß,
wahsaga
Hier kommts drauf an welcher Wert Dir in "variable" steht.
Hier muss ein neues Element stecken, z.B. so:
/* append span */
var span = document.createElement('span');
span .id = span_id;
span .innerHTML = html;
document.getElementById("id").appendChild(span);
Gruß,
Bene
Hier kommts drauf an welcher Wert Dir in "variable" steht.
Hier muss ein neues Element stecken, z.B. so:
/* append span */
var span = document.createElement('span');
span .id = span_id;
span .innerHTML = html;document.getElementById("id").appendChild(span);
Gruß,
Bene
Kannst du mir denn vielleicht nochmal genau erklären was span_id ist?
html dürfte wohl das sein was eingefügt werden soll, also meine <area>
Aber kann man denn alle <area> in ein Element stecken? Insgesamt sind es ca. 180 <area>
Hab das mal eben versucht, aber irgendwie funktioniert das auch nicht
Ich hab da nochmal nen Test gemacht:
var table = document.createElement("table");
test = '<table style="background:#EEEEEE;"><tr><td>test</td></tr></table>';
table.innerHTML = test;
document.getElementById("test").appendChild(table);
Das hat auch irgendwie nicht funktioniert. Oder muss man erst ein Element für table machen, dann eins für tr und dann noch mal für td? Kann doch irgendwie nicht sein.
Also die <area> könnte ich auch sonst in ein <map> stecken und das ganze dann in ein <div> stecken. Das ist nicht das problem.
hi,
table.innerHTML = test;
Das hat auch irgendwie nicht funktioniert.
Das kannst du im IE gleich vergessen - weil innerHTML im IE per Definition für table (und einige andere Elemente) readonly ist.
Oder muss man erst ein Element für table machen, dann eins für tr und dann noch mal für td? Kann doch irgendwie nicht sein.
Wenn du sauber mit DOM-Methoden arbeiten willst - natürlich.
Wo ist das Problem? Schleifen existieren.
gruß,
wahsaga
hi,
table.innerHTML = test;
Das hat auch irgendwie nicht funktioniert.Das kannst du im IE gleich vergessen - weil innerHTML im IE per Definition für table (und einige andere Elemente) readonly ist.
Oder muss man erst ein Element für table machen, dann eins für tr und dann noch mal für td? Kann doch irgendwie nicht sein.
Wenn du sauber mit DOM-Methoden arbeiten willst - natürlich.
Wo ist das Problem? Schleifen existieren.gruß,
wahsaga
Naja, also es hat nun soweit alles funktioniert. Auch meine <area> werden eingetragen, soweit ist alles ok. Also schonmal danke an euch beide^^ Ihr habt mir gut weiter geholfen.
Ich glaub aber nicht das ich mit dem DOM Inspector umgehen kann, denn es scheint nicht auf nachhaltig durch JavaScript eingefügten Inhalt zu reagieren. Egal, ich hab ja nun andere Probleme, denn irgend etwas stimmt mit den <area> nicht^^"
Aber das werde ich schon hinbekommen :)
Also, nochmal danke an euch beide^^