PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : getElementById



-=Player=-
16.08.2009, 20:26
hab folgenden Code:


<script type="text/javascript">
document.getElementById("test").innerHTML = "aaaa";
</script>
<div id="test"></div>wie man sehen sollte, muss eigentlich der Inhalt des DIV's "Test" mit dem Text aaaa ersetzt werden.
Doch es funktioniert einfach nicht.

Fehlerkonsole gibt folgendes aus:
document.getElementById("test") is null

ich komme einfach nicht drauf, warum es nicht funktioniert.
Vielleicht kann mir jemand helfen

hab schon probiert, den Inhalt des divs vorher zu füllen und auch den DIV über den javascript zu stellen. ging aber auch nicht.

blackberry
16.08.2009, 20:41
Der JavaScript Code wird ausgeführt bevor das DIV erstellt wird.
Ein DIV mit der ID "Test" existiert zu der Ausführzeit folglich nicht.

Du könntest deinen JS Code nach unten rücken oder mit setTimeout eine Funktion nach ein paar Millisekunden aufrufen (10 sollten reichen).


EDIT:
Folgender Code funktioniert (FireFox 3.0.13):

<script type="text/javascript">
function DasIstEineFunktion()
{
document.getElementById("test").innerHTML = "aaaa";
}
setTimeout('DasIstEineFunktion();', 1); // 1 schien genug zu sein...
</script>
<div id="test"></div>

crusher
16.08.2009, 20:43
Blödsinn! Alles was du brauchst ist eine Funktion:


<html>
<head>

<script type="text/javascript">
function textChange(text) {
document.getElementById("test").innerHTML = text;
}
</script>

</head>

<body onload="textChange('fuubar')">
<div id='test'></div>
</body>

</html>

-=Player=-
16.08.2009, 20:47
das haut Auge auch gesat, doch dann sollte das hier:


<div id="test"></div>

<script type="text/javascript">
document.getElementById("test").innerHTML = "aaaa";
</script>funktionieren. Tut es aber auch nicht. Fehlerkonsole gibt die gleiche meldung wie oben aus


@crusher:
wenn du das mit funktion meinst:
<script type="text/javascript">
function jstest(){
document.getElementById("test").innerHTML = "aaaa";
}
jstest();
</script>

funktioniert es auch nicht

p.s. das mit dem timeout funktioniert, nur blöd, dass man warten muss

IRET
16.08.2009, 20:51
Kann dir leider nur das was mein Vorposter auch gesagt habe sagen.
Mit einer Funktion geht das sicher.
Is ja nicht so viel Aufwand oder?

crusher
16.08.2009, 20:52
Das funktioniert auch.


<html>
<head>
</head>

<body>
<div id='test'></div>
</body>

<script type="text/javascript">
document.getElementById("test").innerHTML = 'text';
</script>

</html>
Aber nur wenn der <script> Teil nach </body> kommt ;)

blackberry
16.08.2009, 20:52
Das Timeout ist mit 1 Millisekunde wohl nicht maßgebend.

crusher
16.08.2009, 20:54
Doch...
Pausen sind immer schlecht.


Script nach </body> -> Alles Prima
(Dafür hat in dem 1. Example "onLoad()" gesorgt und im 2. der abgeschlossene Body Tag)


Lösung 1:


<html>
<head>

<script type="text/javascript">
function textChange(text) {
document.getElementById("test").innerHTML = text;
}
</script>

</head>

<body onload="textChange('fuubar')">
<div id='test'></div>
</body>

</html>

Lösung 2:

<html>
<head>
</head>

<body>
<div id='test'></div>
</body>

<script type="text/javascript">
document.getElementById("test").innerHTML = 'text';
</script>

</html>

-=Player=-
16.08.2009, 21:03
ok funktioniert jetzt alle wieder. Danke