Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   XML (https://www.delphipraxis.net/46-xml/)
-   -   Problem mit XHTML Strict und Javascript (https://www.delphipraxis.net/105468-problem-mit-xhtml-strict-und-javascript.html)

qb-tim 22. Dez 2007 11:07


Problem mit XHTML Strict und Javascript
 
Hi,

ich wollte auf meiner Seite einen JavaScript Newsticker einbauen. Das komische aber ist, dass es nur angezeigt wird, wenn ich XML- und DOCTYPE-Zeile weglasse. (Ich benutzte FireFox)

Mit XML- und DOCTYPE-Zeilen => Funktioniert nicht
XML-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>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <script type="text/javascript">
   <!--
    var newslist=new Array();
    var cnt=0;
    var curr = "";
    var i=-1;

    newslist[0]=new Array("Tickerbeispiel","link.php")
    newslist[1]=new Array("Tickerinhalt","link.php")
    newslist[2]=new Array("Meldungen mit Links","link.php")

    function newsticker()
    {
     if (i < newslist[cnt][0].length - 1)
     {
      i++;
      temp1 = newslist[cnt][0];   
      temp1 = temp1.split('');   
      curr = curr+temp1[i];
      temp2 = newslist[cnt][1];   
      mtxt.innerHTML = "[size="1"][url='"+temp2+"']"+curr+"[/size][/url]";
      setTimeout('newsticker()',10)
      return;
     }
     i = -1; curr = "";
     if (cnt<newslist.length-1)
      cnt++;
     else
      cnt=0;
     setTimeout('newsticker()',3000)
    }

   //-->
  </script>
  <title>Testseite</title>
 </head>
 <body onload="newsticker();">
  <div style="width:99%">
   

<span id="mtxt" > </span></p>
  </div>
 </body>
</html>
Ohne XML- und DOCTYPE-Zeilen => Funktioniert
XML-Code:
<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <script type="text/javascript">
   <!--
    var newslist=new Array();
    var cnt=0;
    var curr = "";
    var i=-1;

    newslist[0]=new Array("Tickerbeispiel","link.php")
    newslist[1]=new Array("Tickerinhalt","link.php")
    newslist[2]=new Array("Meldungen mit Links","link.php")

    function newsticker()
    {
     if (i < newslist[cnt][0].length - 1)
     {
      i++;
      temp1 = newslist[cnt][0];   
      temp1 = temp1.split('');   
      curr = curr+temp1[i];
      temp2 = newslist[cnt][1];   
      mtxt.innerHTML = "[size="1"][url='"+temp2+"']"+curr+"[/size][/url]";
      setTimeout('newsticker()',10)
      return;
     }
     i = -1; curr = "";
     if (cnt<newslist.length-1)
      cnt++;
     else
      cnt=0;
     setTimeout('newsticker()',3000)
    }

   //-->
  </script>
  <title>Testseite</title>
 </head>
 <body onload="newsticker();">
  <div style="width:99%">
   

<span id="mtxt" > </span></p>
  </div>
 </body>
</html>
Ohne XML- und DOCTYPE-Zeilen wird der JavaScript problemlos angezeigt, aber ich muss die XML- und DOCTYPE-Zeilen aus Pflich da haben! Wie kann ich den Javascript zum funktionieren bringen???

PS: Das passiert auch alles mit XHTML Trasitional

generic 22. Dez 2007 11:31

Re: Problem mit XHTML Strict und Javascript
 
Ich seh da folgende Fehler:

Das Objekt mtxt ist nicht definiert.
Wenn du auf das DomElement mit der ID "mtxt" zugreifen willst, musst du das mit getelementbyid besorgen.

Die Spitzenklammern sollten escaped werden.

Chewie 22. Dez 2007 12:46

Re: Problem mit XHTML Strict und Javascript
 
Zitat:

Zitat von generic
Die Spitzenklammern sollten escaped werden.

Oder alternativ dazu den Inhalt des <script>-Elements als CDATA deklarieren:
XML-Code:
<script type="text/javascript">
<![CDATA[

//JavaScript goes here

]]>
</script>

qb-tim 24. Dez 2007 08:20

Re: Problem mit XHTML Strict und Javascript
 
Hmm... das mit dem CDATA geht auch nicht :gruebel:

Ich habe das jetzt so gemacht:

XML-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>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <script type="text/javascript" src="scripts/ticker.js"></script>
  <title>Testseite</title>
</head>
<body onload="newsticker();">
  <div style="width:99%">
   

<span id="mtxt" > </span></p>
  </div>
</body>
</html>
Javascript:

Code:
var newslist=new Array();
var cnt=0;
var curr = "";
var i=-1;

newslist[0]=new Array("Tickerbeispiel","link.php")
newslist[1]=new Array("Tickerinhalt","link.php")
newslist[2]=new Array("Meldungen mit Links","link.php")

function newsticker()
{
 if (i < newslist[cnt][0].length - 1)
 {
  i++;
  temp1 = newslist[cnt][0];  
  temp1 = temp1.split('');  
  curr = curr+temp1[i];
  temp2 = newslist[cnt][1];  
  mtxt.innerHTML = "[size="1"][url='"+temp2+"']"+curr+"[/size][/url]";
  setTimeout('newsticker()',10)
  return;
 }
 i = -1; curr = "";
 if (cnt<newslist.length-1)
  cnt++;
 else
  cnt=0;
 setTimeout('newsticker()',3000)
}
Es funzt aber trotzdem nicht!!!

Zitat:

Zitat von generic
Das Objekt mtxt ist nicht definiert.
Wenn du auf das DomElement mit der ID "mtxt" zugreifen willst, musst du das mit getelementbyid besorgen.

Wie mache ich das? (Tut mir leid, aber JavaScript ist noch neu für micht...)

Zitat:

Zitat von generic
Die Spitzenklammern sollten escaped werden.

Was meinst du damit??? :?


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:24 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz