className macht Probleme / weis nicht weiter
Ikaros
- javascript
Hi :-)
Das ist mein erster Post in diesem Forum. Ich habe vorher ungefähr
zwei Stunden gegoogelt(was für ein Neologismus:-) und ich habe die
foreneigene Suchfunktion benutzt. Leider brachte mich das alles
nicht weiter.
Mein Problem bezieht sich auf die Eigenschaft className
(http://de.selfhtml.org/javascript/objekte/all.htm#class_name);
sobald ich diese Eigenschaft berühre führt mein Browser kein JS mehr aus.
Also zu besseren Verständnis hier meine Datei: #######################
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<title>Test</title>
<style type="text/css" media="screen">
.test{
color:red;
font-size: 30pt;
}
</style>
<script type="text/javascript" charset="utf-8">
document.getElementById("test_id").className = "test";
alert("done");
</script>
</head>
<body>
<div id="test_id">
test
</div>
</body>
######################################################################
Er führt das Script nicht aus sobald etwas von "className" erwähnt
wird. Falls es wichtig für eine Diagnose ist, ich habe Mac Os Tiger
und verwende FireFox. Das dürfte aber keinen einfluss auf
JS-Interpretation haben.
Ich bin um jede Antwort froh :-)
M.f.G.
Ikaros
Wie wäre es, dein Skript auch auszuführen?
Packe es in eine funktion und rufe diese mittels onload event-handler auf.
Wie wäre es, dein Skript auch auszuführen?
Packe es in eine funktion und rufe diese mittels onload event-handler auf.
Zuerst mal danke für deine Antwort :-)
Das habe ich schon probiert das ist leider garnicht Gegenstand meines
Problems. Das Script wird ausgeführt. Deine Variante hatte ich schon
probiert ^^Klar ist meine gerade etwas unsauber :-) D
hi,
Das habe ich schon probiert das ist leider garnicht Gegenstand meines
Problems. Das Script wird ausgeführt.
_Das_ ist Gegenstand deines Problems - es wird zu früh ausgeführt, siehe meine andere Antwort.
gruß,
wahsaga
Ich weis es inzwischen ;-) Danke nochmal.
Die Resonanz hier is einfach zu schnell für meine Finger:-)
hi,
Mein Problem bezieht sich auf die Eigenschaft className
(http://de.selfhtml.org/javascript/objekte/all.htm#class_name);
sobald ich diese Eigenschaft berühre führt mein Browser kein JS mehr aus.
Das dürfte mit dieser spezielle Eigenschaft wenig zu tun haben.
<script type="text/javascript" charset="utf-8">
document.getElementById("test_id").className = "test";
Zu diesem Zeitpunkt gibt es noch gar kein Element mit einer ID "test_id".
getElementById kann als nur NULL zurückliefern - und NULL hat nun wirklich keine Eigenschaft className.
Das hätte dir die Fehlerkonsole deines Browsers aber auch sagen können.
gruß,
wahsaga
Hi,
Also zu besseren Verständnis hier meine Datei: #######################
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<title>Test</title>
<style type="text/css" media="screen">
.test{
color:red;
font-size: 30pt;
}
</style>
<script type="text/javascript" charset="utf-8">
document.getElementById("test_id").className = "test";
alert("done");
</script>
Hier gibt es das Element mit der ID test_id noch nicht, da die Seite mit dem Laden noch nicht so weit ist.
</head>
<body>
<div id="test_id">
test
</div>
</body>######################################################################
Er führt das Script nicht aus sobald etwas von "className" erwähnt
wird. Falls es wichtig für eine Diagnose ist, ich habe Mac Os Tiger
und verwende FireFox. Das dürfte aber keinen einfluss auf
JS-Interpretation haben.
Aber der FF bietet eine Javascript-Fehlerkonsole an, die dir Fehler anzeigt. So steht bei deinem Script 'document.getElementById("test_id") has no properties'.
Das heisst, dass zu dem Zeitpunkt, wo es aufgerufen wird, es das Element mit der ID "test_id" noch nicht gibt. Es hat nichts mit className zu tun.
Du solltest dein Script in eine Funktion packen und es mit onload (im body-Tag) aufrufen.
Die zweite (wie ich finde nicht so schoene) Moeglichkeit waere, das Script nach dem Div im Quellcode zu platzieren.
mfG,
steckl
Vielen Dank für deine konstruktive Hilfe Steckl :-)
Hello out there!
Du solltest dein Script in eine Funktion packen und es mit onload (im body-Tag) aufrufen.
Nö, sondern Markup und Script sauber getrennt halten. [molily]
Im Script (nicht im HTML) für das Event die Aktion angeben:
window.onload = setClass;
function setClass()
{
document.getElementById("test_id").className = "test";
}
oder mit anonymer Funktion:
window.onload = function ()
{
document.getElementById("test_id").className = "test";
};
See ya up the road,
Gunnar
PS: @Ikaros:
<script type="text/javascript" charset="utf-8">
In der HTML-4.01-DTD [HTML401 §22] steht dazu:
<!ATTLIST SCRIPT
charset %Charset; #IMPLIED -- char encoding of linked resource --
Du hast hier keine verlinkte Ressource (externes Script); die 'charset'-Angabe ist wohl sinnfrei.
Klar hast du recht ;-)
Darauf hab ich nur ned geachtet^^
Das gibts bei meinem Editor nur gratis dazu:-)
Den kann ich übrigends allen Macianern nur sehr weiterempfehlen.
www.macromates.com
thx,
Ikaros