Einsteigerfrage XHTML und JavaScript

Spelmann

Erfahrenes Mitglied
Ich mache gerade meine ersten Schritte mit JavaScript.
Fogendes einfaches Script läuft unter HTML aber nicht unter XHTML
Code:
//<![CDATA[
var Neu = "das ist mein neuer Text";
function Aendern () {
	document.all.meinAbsatz.innerHTML = Neu;
}
//]]>
HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Test</title>
<script type="text/javascript" src="js/test.js"></script>
</head>

<body>
<p id="meinAbsatz">mein alter Text</p>
<a href="javascript:Aendern()">Text aktualisieren</a>
</body>
</html>
Gilt für XHTML eine andere Java Script Syntax? Ich dachte über <![CDATA[ ... ]] sollte das laufen?! :confused:
 
Zuletzt bearbeitet:
Hi,

versuch es mal mit einem Leerzeichen im Anschluß an die Kommentar-Syntax "//".

Code:
// <![CDATA[

...

// ]]>


Oder alternativ mit diesem Kommentartyp:

Code:
/* <![CDATA[ */

...

/* ]]> */

In einer externen JS-Datei ist <![CDATA[ ]]> meines Erachtens aber überhaupt nicht erforderlich :)

Und der Kommentar grundsätzlich an und für sich auch nicht, weil er früher Browsern gewidmet war, die den Script-Bereich nicht erkannt haben, und die heutzutage "ausgestorben" sind.

mfg Maik
 
Hallo,

das arbeiten mit document.all solltest du ganz seien lassen.. warum ?

  • Grund_1: Ist das all Objekt nicht Standardisiert !
  • Grund_2: Stammt das all Objekt aus JScript (Microsoft) !
  • Grund_3: Ist die Performance von den all Objekt sehr schlecht !

Alternativen-> document.getElementById || document.getElementsByTagName !

Sonst wünsche ich weiterhin viel Spaß mit dem erlernen von Javascript :)

MFG.one6666
 
Zuletzt bearbeitet:
Hi Maik.
Funktioniet weder mit anderen Kommentaren noch ohne.
Hängt wohl mit der DOCTYPE Deklaration zusammen.

HTML funktioniert nämlich auch nicht:
HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
Nur wenn ich die Deklaration komplett entferne wird das Script ausgeführt.
 
das arbeiten mit document.all solltest du ganz seien lassen.. warum ?

  • Grund_1: Ist das all Objekt nicht Standardisiert !
  • Grund_2: Stammt das all Objekt aus JScript (Microsoft) !
  • Grund_3: Ist die Performance von den all Objekt sehr schlecht !

Alternativen-> document.getElementById || document.getElementsByTagName !
Der Code stammt als "HTML 4.01"-Version von hier: http://de.selfhtml.org/javascript/objekte/all.htm#inner_html, und schaltet alle Browser in den Quirksmodus, in dem sie document.all unterstützen ;)

Dein Tipp war goldrichtig, was hier das Problem betrifft, nachdem ich eben den Code mal im Browser unter die Lupe genommen habe.

So funktioniert das Script selbst ohne meine fälschlicherweise empfohlenen Leerzeichen:
Javascript:
//<![CDATA[
var Neu = "das ist mein neuer Text";
function Aendern () {
	document.getElementById('meinAbsatz').innerHTML = Neu;
}
//]]>

mfg Maik
 
Ah, vielen Dank.

Hätte ich die Antwort auch selber finden können?
Kennt ihr eine Liste über XHTML valide Befehle. Irgendwie muss ich für den Anfang ja bei allen Beispielen die man im Netz so findet eine Unterscheidung zwischen anwendbaren und nicht so nützlichen Beispielen finden?
 
Kurzer Nachtrag, damit hier jetzt keine Mißverständnisse aufkommen.

Es liegt hier nicht grundsätzlich an der "XHTML"-Deklaration, sondern der Darstellungsmodus (Standardsmode vs. Quirksmode), in dem sich der Browser befindet, ist hier entscheidend.

Mit dieser "HTML 4.01"-Variante, die gleichermaßen die Browser in den standardkonformen Modus schaltet, funktioniert document.all ebenso wenig:
HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
          "http://www.w3.org/TR/html4/loose.dtd">


mfg Maik
 
Kurzer Nachtrag, damit hier jetzt keine Mißverständnisse aufkommen.

Es liegt hier nicht grundsätzlich an der "XHTML"-Deklaration, sondern der Darstellungsmodus (Standardsmode vs. Quirksmode), in dem sich der Browser befindet, ist hier entscheidend.

Mit dieser "HTML 4.01"-Variante, die gleichermaßen die Browser in den standardkonformen Modus schaltet, funktioniert document.all ebenso wenig:
HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
          "http://www.w3.org/TR/html4/loose.dtd">


mfg Maik
Noch ein passender Link aus meinen Bookmarks zum Thema hinterhergeschoben und hier angeheftet :)


mfg Maik
 
Hätte ich die Antwort auch selber finden können?
Jo :)

Gleich im ersten Absatz all: Allgemeines zur Verwendung des all-Objekts:
Damit veraltete Scripte, die ohne Existenzabfrage das all-Objekt verwenden lauffähig sind, haben die Browser Opera ab der Version 7 und Mozilla Firefox 1.0 (dieser nur im Quirks-Modus und auch nicht abfragbar) eine teilweise Unterstützung des all-Objekts eingebaut. Deshalb funktionieren einige der folgenden Beispiele in diesen Browsern. Wenn das jeweilige Element jedoch mit DOM-Methoden angesprochen wird, z.B. mittels document.getElementById(), gelingt der Zugriff auf die Eigenschaften auch schon in älteren Opera-Versionen ab 5.12
Sowie über den im ersten Textabsatz genannten Verweis Dynamisches HTML zu Das Document Object Model (DOM) ;)

mfg Maik
 
Zurück