[JS] Ticker tickt nicht...!?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [JS] Ticker tickt nicht...!?

    Hi Leute!

    Hab hier ein kleines Ticker Script, das absolut nicht so will, wie es sollte!
    Genauer bekomme ich eine leere Ausgabe, als würde der Ticker den Content nicht finden! Die FF JS-Fehlerkonsole gibt jedoch leider keine Fehler aus!

    PHP-Code:
    var width='440px';                  
    var 
    height='17px';                  
    var 
    moStop=true;                       
    //var bgcolor='#000000';              
    var fontfamily 'arial,sans-serif'
    var 
    speed=2;    // scroll speed (1 = slow, 5 = fast)

    var content document.getElementById("scrollertext");
    var 
    cps speed;
    var 
    awmq; var fsz parseInt(height) - 6;


    function 
    startticker() {

      if (
    document.getElementById) {
          var 
    tick '<div style="position:relative;width:'+width+';height:'+height+';overflow:hidden;"';

           if (
    moStop)
             
    tick += ' onmouseover="cps=0" onmouseout="cps=speed"';
             
    tick +='><div id="mq" style="position:absolute;left:0px;top:0px;font-family:'+fontfamily+';font-size:'+fsz+'px;white-space:nowrap;"><\/div><\/div>';
             
    document.getElementById('scroller').innerHTML tick;
             
    mq document.getElementById("mq");
             
    mq.style.left=(parseInt(width)+10)+"px";
             
    mq.innerHTML '<span id="tx"><b>'+content+'<\/b><\/span>';
             
    aw document.getElementById("tx").offsetWidth;
             
    lefttime=setInterval("scrollticker()",50);
           }
      }

    function 
    scrollticker(){
     
    mq.style.left = (parseInt(mq.style.left)>(-10 aw)) ?parseInt(mq.style.left)-cps+"px" parseInt(width)+10+"px";

    Der zugehörige HTML-Code:

    PHP-Code:
    <html>
    <
    head>
    </
    head><body onLoad="startticker();">

    <
    SCRIPT TYPE="text/javascript" SRC="ticker.js"></SCRIPT>

    <
    div id="scroller">
    <
    div id="scrollertext" style="display:none">
     <
    a href="index.php">TEEEST</a>
     &
    nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="index.php">EINS</a>
     &
    nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="index.php">ZWEI</a>
     &
    nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="index.php">DREI</a>

    </
    div>
    </
    div>
    </
    body>
    </
    html
    Lg. aus Wien,
    Berny
    Zuletzt geändert von nichtsooft; 22.03.2008, 20:17.
    WHILE (!$asleep) { $sheep++; }

  • #2
    Genauer bekomme ich eine leere Ausgabe, als würde der Ticker den Content nicht finden!
    Also wenn du "null" für eine leere Ausgabe hältst...

    Ich finde das eigentlich recht aussagekräftig und würde an deiner stelle mal überprüfen, warum die entsprechende Variable (content) null ist.

    Nach einem Blick in folgende Zeile
    Code:
    var content = document.getElementById("scrollertext");
    Sollte sich auch diese Frage beantworten.
    Zuletzt geändert von TobiaZ; 22.03.2008, 21:08.

    Kommentar


    • #3
      Danke für deine schnelle Antwort Tobi!
      Mit null und so haste recht! Da hab ich mich mehr als nur schlecht ausgedrückt.

      Meinst du ich sollte 'content' mit .innerHTML versehen!?
      WHILE (!$asleep) { $sheep++; }

      Kommentar


      • #4
        Was hat denn dein Test ergeben?

        Kommentar


        • #5
          Mit .innerHTML die Fehlermeldung ...("scrollertext") has no properties....
          WHILE (!$asleep) { $sheep++; }

          Kommentar


          • #6
            Warum Fragen, wenn mans auch selbst heraus finden kann.

            So, also haben wir offensichtlich ein Problem an das Scroller-DIV ranzukommen...

            Kommentar


            • #7
              Da stimme ich dir zu!
              Ich hätte auch schon probiert, an Stelle eines DIVs andere Elemente wie z.B. <P> zu setzen....
              ...leider ohne Erfolg.
              WHILE (!$asleep) { $sheep++; }

              Kommentar


              • #8
                Naja, besonders viel mitarbeiten tust du wirklich nicht.

                Also im Sinne einer Fallback-Lösung für nicht JS-Browser würde ich folgendes HTML verwenden.

                Code:
                <html>
                <head></head>
                
                <body>
                
                <div id="scroller">
                  <a href="index.php">TEEEST</a>
                  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="index.php">EINS</a>
                  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="index.php">ZWEI</a>
                  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="index.php">DREI</a>
                </div>
                
                <script type="text/javascript" src="ticker.js"></SCRIPT>
                
                </body>
                </html>
                Das JS ist sowas von verkorkst, da habe ich jetzt nur geringfügig etwas dran geändert. Generell sollte man natürlich übers DOM auf den "Scrolltext" zugreifen, aber gut mit innerHTML geht es ja weitestgehendst in Ordnung:

                Code:
                var width = '440px';                  
                var height= '17px';                  
                var moStop= true;                       
                //var bgcolor='#000000';              
                var fontfamily = 'arial,sans-serif'; 
                var speed=2;    // scroll speed (1 = slow, 5 = fast)
                
                var content = document.getElementById("scroller").innerHTML;
                var cps = speed;
                var aw, mq; var fsz = parseInt(height) - 6;
                
                
                function startticker() {
                
                  if (document.getElementById)
                  {
                      var tick = '<div style="position:relative;width:'+width+';height:'+height+';overflow:hidden;"';
                
                       if (moStop)
                         tick += ' onmouseover="cps=0" onmouseout="cps=speed"';
                         tick +='><div id="mq" style="position:absolute;left:0px;top:0px;font-family:'+fontfamily+';font-size:'+fsz+'px;white-space:nowrap;"></div></div>';
                         document.getElementById('scroller').innerHTML = tick;
                         mq = document.getElementById("mq");
                         mq.style.left=(parseInt(width)+10)+"px";
                         mq.innerHTML = '<span id="tx"><b>'+content+'</b></span>';
                         aw = document.getElementById("tx").offsetWidth;
                         lefttime=setInterval("scrollticker()",50);
                       }
                  }
                
                function scrollticker(){
                 mq.style.left = (parseInt(mq.style.left)>(-10 - aw)) ?parseInt(mq.style.left)-cps+"px" : parseInt(width)+10+"px";
                }
                
                
                startticker();
                Der Witz an der Sache für dich ist, dass du natürlich immer noch keinen Plan hast, was der Ticker mach, aber so ist das halt...

                Kommentar


                • #9
                  Naja Tobi; mal ehrlich... OK finde ich deine Aussage nicht! Ich geb zu, dass dieses Script nicht von mir ist, aber verstehen tu ich's schon, also von daher...

                  Das das JS erst nach dem betreffenden DIV eingebunden werden soll, finde ich irgendwie abstrus, aber so lange es funktioniert...

                  Die neueste funktionierende Version:
                  PHP-Code:
                  var width '440px';                  
                  var 
                  height'17px';                  
                  var 
                  moStoptrue;        // Ticker hält an, wenn die Maus drüber ist
                  var bgcolor='#FDC500';    // none oder HEXcode eintragen
                  var fontfamily='arial,sans-serif'
                  var 
                  speed=2;        // Scrollgeschwindigkeit (1 = langsam, 5 = schnell)

                  var content document.getElementById('scrollertext').innerHTML;
                  var 
                  cps speed;
                  var 
                  awmq; var fsz parseInt(height) - 6;


                  function 
                  startticker() {

                    if (
                  document.getElementById) {
                        var 
                  tick '<div style="position:relative;width:'+width+';height:'+height+';';
                        if (
                  bgcolor == 'none') {
                           
                  tick += 'overflow:hidden;"';
                        } else {
                           
                  tick += 'background-color:'+bgcolor+';overflow:hidden;"';
                        }

                         if (
                  moStop)
                           
                  tick += 'onmouseover="cps=0" onmouseout="cps=speed"';
                           
                  tick += '><div id="mq" style="position:absolute;left:0px;top:0px;font-family:'+fontfamily+';font-size:'+fsz+'px;white-space:nowrap;"></div></div>';
                           
                  document.getElementById('scroller').innerHTML tick;
                           
                  mq document.getElementById("mq");
                           
                  mq.style.left=(parseInt(width)+10)+"px";
                           
                  mq.innerHTML '<span id="tx"><b>'+content+'</b></span>';
                           
                  aw document.getElementById("tx").offsetWidth;
                           
                  lefttime=setInterval("scrollticker()",50);
                         }
                    }

                  function 
                  scrollticker(){
                   
                  mq.style.left = (parseInt(mq.style.left)>(-10 aw)) ?parseInt(mq.style.left)-cps+"px" parseInt(width)+10+"px";
                  }

                  startticker(); 
                  Zuletzt geändert von nichtsooft; 22.03.2008, 22:20.
                  WHILE (!$asleep) { $sheep++; }

                  Kommentar


                  • #10
                    Das das JS erst nach dem betreffenden DIV eingebunden werden soll, finde ich irgendwie abstrus, aber so lange es funktioniert...
                    Warum sollte das Javascript arbeiten, BEVOR das DIV überhaupt existiert???

                    Naja, soviel zum Thema verstanden.

                    Kommentar


                    • #11
                      Weil ich viele Scripts hab, die weit vorher initialisiert werden und trotzdem ein Element per ID finden...
                      Ein Bsp. dafür ist das Script das mir Checkboxen durch nette gfx ersetzt.
                      Zuletzt geändert von nichtsooft; 23.03.2008, 02:54.
                      WHILE (!$asleep) { $sheep++; }

                      Kommentar


                      • #12
                        Weil ich viele Scripts hab, die weit vorher initialisiert werden und trotzdem ein Element per ID finden...
                        Das ist nicht der Grund. Es geht sich nur darum, wann das Script ausgeführt wird, bzw. auf die Elemente zugreift. Und ich hab den Aufruf eben ganz ans Ende gesetzt, weils den Aufbau beschleunigt und so einen Fallback hat, wenn JS nicht unterstützt wird. (onload-Attribute braucht heute kein Mensch mehr.)

                        Kommentar

                        Lädt...
                        X