Thomas Detsch: Probleme im Firefox, er tickt nicht richtig!

Hallo,

ich habe einen Newsticker erstellt, oder vielmehr ein Script runtergeladen und angepaßt. Im IE auch keine Probleme, nur leider gibt mir Firefox die Fehlermeldung:
Fehler: document.tickertape has no properties
Quelldatei: http://localhost/test.html
Zeile: 46

Ich habe euch Zeile 46 mal kenntlich gemacht. Leider kann ich mit der Meldung nichts anfangen, die Funktion braucht ja keine Parameter, sofern er das anmeckert. Hat da jemand einen Tipp?

<script language="JavaScript1.2">

var speed=4500
var news=new Array()
news[0]="<p align=center><a href='http://java.topcool.de'>  { Java Script }</a>"
news[1]="<p align=center><a href='http://java.topcool.de'>finden sie auch auf unseren Parterseiten</a>"
news[2]="<p align=center><a href='Mailto:Black_runner@t-online.de'>Black_runner@t-online.de</a>"

i=0
if (document.all)
  tickerobject=document.all.subtickertape.style
else
  tickerobject=document.tickertape.document //HIER IST DER FEHLER!!!
function regenerate()
{
  window.location.reload()
}
function regenerate2()
{
  if (document.layers)
    setTimeout("window.onresize=regenerate",450)
}
function update()
{
  BgFade(0xff,0xff,0xff, 0x00,0x00,0x00,10);
  if (document.layers)
  {
    document.tickertape.document.subtickertape.document.write('<span class="subtickertapefont">'+news[i]+'</span>')
    document.tickertape.document.subtickertape.document.close()
  }
  else
    document.all.subtickertape.innerHTML=news[i]
  if (i < news.length-1)
  {  i++}
  else
  {  i=0}
  setTimeout("update()",speed)
}
function BgFade(red1, grn1, blu1, red2,
grn2, blu2, steps) {
sred = red1; sgrn = grn1; sblu = blu1;
ered = red2; egrn = grn2; eblu = blu2;
inc = steps;
step = 0;
RunFader();
}
function RunFader() {
var epct = step/inc;
var spct = 1 - epct;
if (document.layers)
tickerobject.bgColor =
Math.floor(sred * spct + ered *
epct)*256*256 +
Math.floor(sgrn * spct + egrn * epct)*256 +
Math.floor(sblu * spct + eblu * epct);
else
tickerobject.backgroundColor=
Math.floor(sred * spct + ered *
epct)*256*256 +
Math.floor(sgrn * spct + egrn * epct)*256 +
Math.floor(sblu * spct + eblu * epct);
if ( step < inc ) {
setTimeout('RunFader()',50);
}
step++;
}
</script>

Gruß,
Thomas

  1. Hi,
    liegt es vielleicht daran, dass du fast überall die Semikolons vergessen hast?

    Markus.

    --
    sh:( fo:| ch:? rl:( br:> n4:( ie:{ mo:) va:) de:] zu:) fl:( ss:| ls:] js:|
  2. Hallo Thomas!

    Soweit ich das sehe sollte Deine Zeile wahrscheinlich so aussehen:

    tickerobject=document.getElementById("tickertape")

    Da ich aber nicht die gesamte Seite sehe, kann ich Dir auch nicht mit Sicherheit sagen ob dies stimmt. Wenn man sich irgendwo Ticker kopiert, dann sollte man auch wissen wie man sie anpasst ;o)

    http://www.robert-web.de/textticker2.shtml Das  ist der ursprüngliche Ticker? Oder? Vielleicht sollte man dazu sagen, dass dieser nicht aktuelle Browser unterstützt.

    Schönen Gruß

    PS: @ Markus. Die Semikolons mögen in JavaScript schön, und auch gewünscht,  aber nicht nötig sein.

    Afra

    1. Hi,

      PS: @ Markus. Die Semikolons mögen in JavaScript schön, und auch gewünscht,  aber nicht nötig sein.

      Danke für den Hinweis. Ich hätte mir nämlich nicht gedacht, dass Javascript so schlampig ist :)

      Markus.

      --
      sh:( fo:| ch:? rl:( br:> n4:( ie:{ mo:) va:) de:] zu:) fl:( ss:| ls:] js:|
  3. Hallo Thomas,

    ich habe einen Newsticker erstellt, oder vielmehr ein Script runtergeladen und angepaßt. Im IE auch keine Probleme, nur leider gibt mir Firefox die Fehlermeldung:
    Fehler: document.tickertape has no properties
    Quelldatei: http://localhost/test.html
    Zeile: 46

    Ich habe euch Zeile 46 mal kenntlich gemacht. Leider kann ich mit der Meldung nichts anfangen, die Funktion braucht ja keine Parameter, sofern er das anmeckert. Hat da jemand einen Tipp?

    Ich habe mir den Code mal durchgesehen und ihn für schrecklich befunden. Gibt es denn in deinem Dokument ein Element namens "tickertape"? Und wenn du eines erstellt hast, muss es auch noch ein Unterelement namens "document" haben.

    Nachfolgend dein gefundenes Skript, mit einigen Kommentaren dazu. Du kannst ja nichts für den Code, aber ich empfehle dir einen besseren zu suchen! ;-)

    <script language="JavaScript1.2">

    Erforderliches Attribut "type" fehlt.
    Außerdem fehlt für ältere Browser hier ein "<!--" und am Ende ein "//-->".

    var speed=4500

    Kein Semikolon nach dem Ende der Anweisung (kein Fehler, aber doch ein Tabu).
    Übrigens fehlt im Skript fast überall das Semikolon.

    var news=new Array()
    news[0]="<p align=center><a href='http://java.topcool.de'>  { Java Script }</a>"
    news[1]="<p align=center><a href='http://java.topcool.de'>finden sie auch auf unseren Parterseiten</a>"
    news[2]="<p align=center><a href='Mailto:Black_runner@t-online.de'>Black_runner@t-online.de</a>"

    i=0
    if (document.all)
      tickerobject=document.all.subtickertape.style
    else
      tickerobject=document.tickertape.document //HIER IST DER FEHLER!!!

    Wie gesagt, gibt es denn überhaupt ein Objekt "tickertape" in deinem Dokument? Und die Variable "tickerobject" wird nicht ordnungsgemäß deklariert...

    [...weiterer Code...]

    Alles in allem wirkt das Skript sehr zusammenklammbüstert, ich empfehle daher dringends die Suche nach einem anderen. Da ersparst du dir wirklich ein paar Probleme, und bestimmt findest du auch eines was in allen JavaScript-fähigen Browsern funktioniert. :-)

    Bis dann!

    Marc Reichelt || http://www.marcreichelt.de/

    --
    Linux is like a wigwam - no windows, no gates and an Apache inside!
    SELFCode: ie:{ fl:| br:> va:} ls:< fo:} rl:( n4:( ss:) de:> js:| ch:? sh:| mo:) zu:)
    http://emmanuel.dammerer.at/selfcode.html
    1. hi,

      Gibt es denn in deinem Dokument ein Element namens "tickertape"? Und wenn du eines erstellt hast, muss es auch noch ein Unterelement namens "document" haben.

      das hätte es vermutlich - wie du siehst, steht diese anweisung in einem if-zweig, der auf document.layers abfragt.

      und beim layers-objekt vom NS4 war es doch IIRC in der tat so, dass jeder layer auch wieder ein document unter sich hatte ...

      gruß,
      wahsaga

      --
      "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
      1. Hallo wahsaga

        Gibt es denn in deinem Dokument ein Element namens "tickertape"? Und wenn du eines erstellt hast, muss es auch noch ein Unterelement namens "document" haben.
        das hätte es vermutlich - wie du siehst, steht diese anweisung in einem if-zweig, der auf document.layers abfragt.

        Nö, es steht im else-Zweig einer if-Anweisung, die das Vorhandensein von document.all testet. Halt aus Zeiten: IE 4.x + NS 4.x = alle (javascript-fähigen) Browser.

        und beim layers-objekt vom NS4 war es doch IIRC in der tat so, dass jeder layer auch wieder ein document unter sich hatte ...

        Dein Langzeitgedächtnis ist in Ordnung, siehe http://de.selfhtml.org/javascript/objekte/layers.htm#allgemeines.

        Freundliche Grüße

        Vinzenz

        1. hi,

          Nö, es steht im else-Zweig einer if-Anweisung, die das Vorhandensein von document.all testet.

          oh, das oben hab ich übersehen.
          ich bezog mich auf das untere, wo ein if(document.layers) davorsteht.

          gruß,
          wahsaga

          --
          "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
  4. Hallo Thomas

    ich habe einen Newsticker erstellt, oder vielmehr ein Script runtergeladen und angepaßt.

    Auch dieses Skript ist so topaktuell, dass es davon ausgeht, dass IE 4.x und NS 4.x die einzigen Javascript-tauglichen Browser auf der Welt sind :-=

    Im IE auch keine Probleme, nur leider gibt mir Firefox die Fehlermeldung:

    Bitte lies folgenden Archivthread </archiv/2005/2/t101894/> und schau' Dir vielleicht Cybaers Lösung an. Das wäre auch etwas für Dich.

    Als Beispiel:

    if (document.layers) {

    tu irgendwas
      kann nur ein Netscape 4.x sein, siehe z.B.
      http://de.selfhtml.org/javascript/objekte/layers.htm#allgemeines

    }
      else
        document.all.subtickertape.innerHTML=news[i]

    ich übertreibe: Wenn es nicht ein Netscape 4.x ist, dann muss der Browser das Objekt document.all unterstützen. Ja ich weiß, neuere Operas und ältere Operas, die sich als IE ausgeben, haben auch ein document.all.

    Die Lektüre von SelfHTML, insbesondere des Javascript-Abschnitts können Dir beim zukünftigen Umgang mit Javascript weiterhelfen.

    Freundliche Grüße

    Vinzenz

  5. if (document.all)
      tickerobject=document.all.subtickertape.style
    else
      tickerobject=document.tickertape.document //HIER IST DER FEHLER!!!

    Hallo,

    Firefox kann mit document.all nix anfangen, denn das ist nur für den IE gedacht .. Du musst bei Firefox document.getElementById("name_des_elements") verwenden! Der IE 6 "versteht" das übrigens ebenfalls.

    Gruß
    Chris