Scrolling News Ticker Jquery - Issues

6.8k views Asked by At

Original Source & Example:

http://www.htmldrive.net/items/show/397/Vertical-Scrolling-News-Ticker-With-jQuery-jCarouse

Hello Again!! Scrolling News Ticker Jquery with some issues:


First Issue : Internet Explorer Error Message

" Object doesn't support this property or method " Line: 269: Line 269)

           ticker.mouseenter(function() {  //   <---Line: 269
          //stop current animation
          ticker.children().stop();

        });

  • Second Issue : The only way of clicking on a news option (to be directed to the link of a page) is through the text title that in the website example is in blue color. I would like for the user to be able to click on the whole section of the option that includes the image aswell.

  • Third Issue : When the news scrolls it looks all in one, is there a way to add a line to separate each section.

  • Forth Issue: Is there a way to pause the automatic scrolling when a user puts the mouse over a section?
  • Is there a way to add more text under the title and category?

Here is the script itself with the IE issue highlighted with an arrow on the right hand side below:

   <script type="text/javascript">
      $(function() {

    //cache the ticker
    var ticker = $("#ticker");

    //wrap dt:dd pairs in divs
    ticker.children().filter("dt").each(function() {

      var dt = $(this),
        container = $("<div>");

      dt.next().appendTo(container);
      dt.prependTo(container);

      container.appendTo(ticker);
    });

    //hide the scrollbar
    ticker.css("overflow", "hidden");

    //animator function
    function animator(currentItem) {

      //work out new anim duration
      var distance = currentItem.height();
        duration = (distance + parseInt(currentItem.css("marginTop"))) / 0.020;

      //animate the first child of the ticker
      currentItem.animate({ marginTop: -distance }, duration, "linear", function() {

        //move current item to the bottom
        currentItem.appendTo(currentItem.parent()).css("marginTop", 0);

        //recurse
        animator(currentItem.parent().children(":first"));
      }); 
    };

    //start the ticker
    animator(ticker.children(":first"));

    //set mouseenter
     ticker.mouseenter(function() {


    ticker.mouseenter(function() {  //  <---Line: 269
      //stop current animation
      ticker.children().stop();

    });

    //set mouseleave
    ticker.mouseleave(function() {

            //resume animation
    animator(ticker.children(":first"));

    });
      });
    </script>

I would deeply appreciate it!!

1

There are 1 answers

0
Zammuuz On BEST ANSWER

to add line to separate each items add border-bottom:1px solid black; to the css.

after read your question i would like to show you the javascript method that i used in my site and stops when mouse over.

<div id="marqueecontainer" onMouseover="copyspeed=pausespeed"  onMouseout="copyspeed=marqueespeed">
<div id="vmarquee" style="position: absolute; width: 98%;">

 <!--YOUR SCROLL CONTENT HERE-->

 <!--YOUR SCROLL CONTENT HERE-->

 </div>
 </div><style type="text/css">

 #marqueecontainer{
 position: relative;
  width: 200px; /*marquee width */
 height: 200px; /*marquee height */
  background-color: white;
 overflow: hidden;
 border: 3px solid orange;
 padding: 2px;
 padding-left: 4px;
 }

 </style>
<script type="text/javascript">

 var delayb4scroll=2000 //Specify initial delay before marquee starts to scroll on page (2000=2 seconds)
  var marqueespeed=2 //Specify marquee scroll speed (larger is faster 1-10)
  var pauseit=1 //Pause marquee onMousever (0=no. 1=yes)?

   var copyspeed=marqueespeed
   var pausespeed=(pauseit==0)? copyspeed: 0
   var actualheight=''

    function scrollmarquee(){
    if (parseInt(cross_marquee.style.top)>(actualheight*(-1)+8))
     cross_marquee.style.top=parseInt(cross_marquee.style.top)-copyspeed+"px" 
     else 
     cross_marquee.style.top=parseInt(marqueeheight)+8+"px"
     }

     function initializemarquee(){
      cross_marquee=document.getElementById("vmarquee")
       cross_marquee.style.top=0
       marqueeheight=document.getElementById("marqueecontainer").offsetHeight
       actualheight=cross_marquee.offsetHeight //height of marquee content (much of which is hidden from view)
         if (window.opera || navigator.userAgent.indexOf("Netscape/7")!=-1){ //if Opera or Netscape 7x, add scrollbars to scroll and exit
       cross_marquee.style.height=marqueeheight+"px"
      cross_marquee.style.overflow="scroll"
      return
       }
        setTimeout('lefttime=setInterval("scrollmarquee()",30)', delayb4scroll)
        }

     if (window.addEventListener)
      window.addEventListener("load", initializemarquee, false)
  else if (window.attachEvent)
     window.attachEvent("onload", initializemarquee)
   else if (document.getElementById)
     window.onload=initializemarquee


    </script>

you can view the demo at here