javascript firefox innerHTML Problem
lima-city → Forum → Die eigene Homepage → HTML, CSS & Javascript
code
fangen
fehler
formatierung
funktion
geschrieben code
gleichen fehler
http
listen
opus
parameter
problem
rat
schleife
suchen
text
treten
unterschied
url
zahl
-
Also, auf einer Website will ich dass sich auf Mausclick der Text in einem div verändert. Da das ganze sich mehrfach wiederholt und die divs in einer php in einer Schleife geschrieben werden, sind ihre ids durchnummeriert. Sie fangen alle mit dem präfix: "likeorunlikelink" and und dann folgt eine Zahl, das erste div hat also die id likeorunlikelink1 das zweite die id likeorunlikelink2 etc.
So jetzt hab ich in dem link einfach geschrieben:
Der Link steht direkt vor dem jeweiligen Div und zahl ist dann immer die zahl die das div in seiner id hat.<a href="javascript: testtesttest(zahl);">Text</a>
So und dann ist da die Javascript funktion testtesttest:
function testtesttest(inputid,_counter){ var object = document.getElementById('likeorunlikelink'+_counter); object.innerHTML = "huhuhu"; }
Wenn man jetzt auf den Link klickt passiert rein gar nichts mit dem Text im div, wenn ich aber ein alert in die Javascript-funktion einbinde, direkt bevor sie geschlossen wird (also:
) dann funktioniert das ganze.function testtesttest(inputid,_counter){ var object = document.getElementById('likeorunlikelink'+_counter); object.innerHTML = "huhuhu"; alert('1'); }
Außerdem tritt das Problem nur im Firefox auf, nicht aber im IE oder in Opera.
Vielen Dank schon Mal im Vorraus für die Hilfe,
ich suche inzwischen schon seit 2 Stunden nach dem Fehler und finde ihn einfach nicht, obwohl das Problem an sich ja gar nicht so schwer aussieht. -.- -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Wieso deklarierst du in der Funktion zwei Parameter (inputid und _counter), rufst aber nur einen Parameter auf?
-
das ist nur eine verkürzte version des codes, später brauch ich noch beide. aber auch so schon funktionniert das nicht
-
Poste mal bitte einen Link zu einer Beispielseite.
-
Ich denke, du solltest wirklich so viele Parameter übergeben, wie benötigt werden.
Des Weiteren kannst du dir mal die Fehlerkonsole in FF angucken (Strg+Shift+J).
Und Javascript würde ich persönlich mit onclick aufrufen, weiß nicht inwieweit es Unterschiede gibt, also:
<a onclick="testtesttest(zahl);">
-
Ich habe noch einen Rat: Ich würde object nicht als Variablename verwenden, da es ein reserviertes Wort sein könnte. Wenn man nach Schlüsselwort-Listen von JavaScript sucht, findet man Object zwar in keiner Liste, dafür aber hier. Ich vermute also, dass zumindest der Firefox nicht mit Object als Variablename klarkommt.
Beitrag zuletzt geändert: 20.7.2011 9:59:28 von trueweb -
bei der Anzahl der Parameter hab ich mich hier beim Reinschreiben vom Post nur Vertan, die stimmen generell, außerdem ergäbe es keinen Sinn wenn die der Fehler wären, dass es dann mit alert funktioniert! Das mit Object ist auch kein Problem, einerseits funktionieren andere Funkionen mit object als variable vollkommen Problemlos, andererseits hab ich es auch schon probiert mit object1 statt object als Variablenname und da gab es den gleichen Fehler.
Auch an das mit onlick hab ich schon versucht, aber das hat keinen Unterschied gemacht, und im mom hab ich es noch via a href anstatt via a onclick, weil bei a onclick irgendwie die CSS-Formatierung für a nicht funktioniert hat - aber wie gesagt, es hat keinen Einfluss auf den Fehler gehabt. -
Folgendes:
<html> <head> <title>Test</title> <script type="text/javascript"><!-- function changeText(_i) { var _element = document.getElementById("id" + _i); var _neuerText = document.createTextNode("huhuhu"); _element.replaceChild(_neuerText, _element.firstChild); alert(_i); } function createDivs() { for(var i = 0; i < 10; ++i) { var _div = document.createElement("div"); _div.setAttribute("id", "id" + i); var _link = document.createElement("a"); _link.setAttribute("onclick", "changeText(" + i + ");"); var _text = document.createTextNode("Ich bin div " + i); _link.appendChild(_text); _div.appendChild(_link); document.getElementById("_body").appendChild(_div); } } //--></script> </head> <body id="_body" onload="createDivs();"> </body> </html>
... funktioniert im FF schon.
Im IE8 jedoch nicht. Weiß nicht, wieso nicht. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage