Jannik
Mitglied
Registriert: 16.08.2006
Beiträge: 43
|
|
Hi, wiedereinmal habe ich ein Script, welches (noch) nicht gültig ist. Ich hoffe ich kann nochmal auf eure Unterstützung hoffen, auch wenn diesmal ein paar mehr Fehler drin sind. Zu aller erst mal das Script selbst:
Code:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Countdown</title>
<meta http-equiv="Content-Script-Type" content="text/javascript" />
<script type="text/javascript">
/* <![CDATA[ */
var jahr=2007, monat=08, tag=02, stunde=00, minute=00, sekunde=00;
var zieldatum=new Date(jahr,monat-1,tag,stunde,minute,sekunde);
function countdown()
{
startdatum=new Date();
if(startdatum<zieldatum)
{
var tage=0, stunden=0, minuten=0, sekunden=0;
while(startdatum.getTime()+(24*60*60*1000)<zieldatum)
{
tage++;
startdatum.setTime(startdatum.getTime()+(24*60*60*1000));
};
stunden=Math.floor((zieldatum-startdatum)/(60*60*1000));
startdatum.setTime(startdatum.getTime()+stunden*60*60*1000);
minuten=Math.floor((zieldatum-startdatum)/(60*1000));
startdatum.setTime(startdatum.getTime()+minuten*60*1000);
sekunden=Math.floor((zieldatum-startdatum)/1000);
(tage!=1)?tage=tage+" Tage, ":tage=tage+" Tag, ";
(stunden!=1)?stunden=stunden+" Stunden, ":stunden=stunden+" Stunde, ";
(minuten!=1)?minuten=minuten+" Minuten und ":minuten=minuten+" Minute und ";
if(sekunden<10) sekunden="0"+sekunden;
(sekunden!=1)?sekunden=sekunden+" Sekunden":sekunden=sekunden+" Sekunde";
document.getElementById("countdowninput").value=tage+stunden+minuten+sekunden;
setTimeout("countdown()",200);
};
else document.getElementById("countdowninput").value="Countdown beendet";
};
/* ]]> */
</script>
</head>
<body onload="countdown()">
<p>
<input id="countdowninput" readonly="readonly" size="47" />
</p>
</body>
</html> |
Nun der erste Fehler: >Im Tag form ist das Attribut `name` nicht erlaubt.< Ich denke mal, man kann es wieder in id ändern, aber ich weis nicht so genau wie.
Ich hoffe mir wird geholfen. Danke ^^
mfg.
Beitrag geändert von Jannik (09.09.2006 12:16:16)
|
|
| 27.08.2006 18:16:04 |
|
Wishmaster
Master of Wishes
Registriert: 24.08.2006
Beiträge: 4
|
|
Nimm doch einfach das hier...
http://www.validome.org/forum/viewtopicp-519-1.htm
Greetz
|
|
| 28.08.2006 13:43:05 |
|
Jannik
Mitglied
Registriert: 16.08.2006
Beiträge: 43
|
|
Hi, danke für die Antwort. Leider möchte ich gerne diesen da oben behalten, da er genauso funktioniert wie er soll. Z.B. Kann man angeben was für ein Text nach Ende des Countdowns angezeigt wird usw. Das ist in der Hinsicht wichitg, da die HP für die ich das Script brauche, nicht für mich ist. Da ich aber die Seite valide bekommen muss, war halt meine Frage nach dem Script da oben. Sorry..
Also ist es jetzt möglich meinen ersten Fehler zu beheben? Also der mit dem name?
mfg.
|
|
| 28.08.2006 15:16:42 |
|
|
|
Ersetze "document.countdownform.countdowninput.value" durch "document.getElementById('countdowninput').value" und
<form action="" name="countdownform"> <div> <input size="47" name="countdowninput" readonly="readonly" /> </div> </form>
durch
<div> <input size="47" id="countdowninput" readonly="readonly" /> </div>
|
|
| 29.08.2006 22:33:44 |
|
Jannik
Mitglied
Registriert: 16.08.2006
Beiträge: 43
|
|
Ok, vielen Dank. Nun kommt der nächste Fehler. Dabei gehts darum: Zeile: 42 Spalte: 1 Fehler: Das Tag body ist an dieser Stelle nicht erlaubt. Fehlerstelle: <body onload="countdown()">
Ich könnte ja einfach das erste ganz normale <body> löschen, aber ich wollte fargen, wie es nicht funktioniert, wenn man alles nötige zwischen normalem <body> und </body> definiert. Also kurz: Wie bekomme ich da das >>> onload="countdown()"<<< weg?
mfg.^^
Beitrag geändert von Jannik (30.08.2006 15:11:22)
|
|
| 30.08.2006 15:00:48 |
|
Wishmaster
Master of Wishes
Registriert: 24.08.2006
Beiträge: 4
|
|
Ich würd sagen gar nicht^^
Lösch einfach mal das erste <body> und das mit dem Countdown lässt du da...
|
|
| 31.08.2006 19:36:34 |
|
Jannik
Mitglied
Registriert: 16.08.2006
Beiträge: 43
|
|
Okay.. Dann mach ich das so.
Das nächste wären zwei Sachen, die auch an mehreren Stellen als Fehler erkannt werden. Es reicht aber wohl eins als Beispiel:
Zeile: 15 Spalte: 24 Fehler: Zeichen ")" in Attributspezifikationsliste nicht erlaubt Fehlerstelle: if(startdatum<zieldatum)
Zeile: 15 Spalte: 14 Fehler: Unbekanntes Tag `zieldatum`. Eine Liste der erlaubten Tags finden Sie hier. Fehlerstelle: if(startdatum<zieldatum)
Wie ist das jetzt zu Verstehen? Also das ein paar Zeichen wie das < oder > in manchen Scripts angestrichen werden hatten wir ja schonmal in nem andern Thread. Da kann man das dann mit so ner "Art" Kommentar machen. Aber hat diese ")" Da oben was damit zu tun? Und was ist mit dem zieldatum?
mfg.
Beitrag geändert von Jannik (01.09.2006 13:03:21)
|
|
| 01.09.2006 12:56:44 |
|
|
|
Eventuell meinst du ja http://www.validome.org/forum/viewtopicp-516-1.htm - Dort sind das aber keine Kommentare sondern Entities.
In deinem Fall wäre das mit den Entities zwar theoretisch auch Möglich, allerdings würde das Script dann nur Funktionieren, wenn der Browser XHTML kann un das Dokument von ihm auch als XML verarbeitet wird. Das liegt daran, dass in HTML der Inhalt von script-Elementen als #CDATA angesehen wird, während es in XHTML #PCDATA ist. Siehe dazu http://de.selfhtml.org/html/xhtml/unterschiede.htm#script_style. Das dortige Beispiel für XHTML ist im Prinzip schon brauchbar, allerdings wird in uralten User-Agents dann ggf. noch der Scriptcode angezeigt.
Unter http://hixie.ch/advocacy/xhtml findet sich eine weiter Beschreibung der Problematik mit einer universellen Lösung:
Code:
<script type="text/javascript"><!--//--><![CDATA[//><!--
tu_was("auch mit sonderzeichen:<>:-)");
//--><!]]></script> |
Diese Kommentar-Syntax ist ziemlich schwer zu durchschauen, aber sie ist in XHTML valide und mir ist kein HTML-Parser bekannt, der darüber stolpert. In dem Script selbst darf aber kein "]]>" (eh ziemlich unwahrscheinlich) und kein "--" vorkommen. Letzteres kommt als Dekrementierungsoperator leider recht häufig vor, dies sollte man dann von variable-- in variable=variable-1 umschreiben. Oder man nutzt halt wie vorgeschlagen externe Scripts, dort hat man das Problem gar nicht erst.
|
|
| 02.09.2006 21:21:30 |
|
Jannik
Mitglied
Registriert: 16.08.2006
Beiträge: 43
|
|
Hi, also genau das meinte ich mit "Kommentar". Also wenn das Script erstmal weitgehend valiede ist werde ich das zwischen /* <![CDATA[ */ und /* ]]> */ setzen. das habe ich nicht direkt am Anfang gemacht, weil der Validator dann das ganze Script übergeht und ich die Fehler darin nicht mehr angezeigt bekomme. Heißt also: Erstmal die andern Fehler verbessern und die die mit dem CDATA zusammenhängen werden dann ganz zum Schluss ausgeschaltet. Mein Problem ist nun, dass ich nicht weis, ob der aktuelle Fehler (im grudne sinds ja 2) damit was zu tun hat. Kann mir da einer (du?) weiterhelfen? Also das mit der ")" könnte sein oder? Ich schätze aber mal, dass das Tag "zieldatum" falsch ist, hängt damit nicht zusammen. Lange Rede, Sinn wie immer: Was kann ich tun.
mfg.
|
|
| 03.09.2006 09:33:24 |
|
|
|
Du überschätzt die Fähigkeiten des Validators, der Inhalt eines script-Elements ist für den nur einfacher Text (#CDATA in HTML, #PCDATA in XHTML), da könntest du ebenso was aus der Zeitung zitieren, das ist dem gleich.
Die Fehler die dir gemeldet wurden, waren ein Verstoß gegen die XHTML-Spezifikation. Innerhalb eines script-Elements wurde ein Starttag mit dem Namen zieldatum gefunden, nichts anderes sagt ja die Zeichenfolge "<zieldatum". Danach folgt ein ")", obwohl das kein gültiger Name für ein nun erwartetes Attribut ist. Beide Fehlermeldungen sind Folgen des "<" mitten in dem script-Block.
Es ist also unsinnig, die Kommentarsyntax vorerst wegzulassen. um das Script zu "validieren".
|
|
| 04.09.2006 00:55:55 |
|
HTMELL
Administrator
Registriert: 11.05.2006
Beiträge: 544
|
|
PS: einen Script kann man überhaupt nicht validieren, bestenfalls interpretieren, und selbst dann könnte kein Validator der Welt feststellen ob der Script korrekt arbeitet da er sich nicht denken kann was aufgrund von Benutzeraktivitäten passieren soll, geschweige denn ob das darauf folgende korrekt funktioniert usw...
_______________________________________ mfg Thomas Mell
www.validome.org
|
|
| 04.09.2006 02:10:21 |
|
Jannik
Mitglied
Registriert: 16.08.2006
Beiträge: 43
|
|
Edit: Ok, habs jetzt kapiert. Habe das mit CDATA gamacht, da nun alle Fehler damit zusammenhingen.
Ein danke an dieser Stelle für alle die geholfen haben die Fehler zu beheben und mich über ein paar Sachen aufzuklären.
mfg.
Beitrag geändert von Jannik (09.09.2006 12:15:44)
|
|
| 08.09.2006 19:53:08 |
|
Wechsel zu
Die letzten Beiträge aus diesen Forum
|
|