2013-01-22 17 views
0

我試圖把文字選框放入我的網站。一切工作除了文本不會開始滾動,直到它被鼠標滾動。我需要它在頁面加載時開始滾動。Marque將不會啓動,直到鼠標懸停

相同的代碼開始的onload在這裏很好:http://javascript.about.com/library/blctmarquee1.htm

我的控制檯說:

Uncaught TypeError: Cannot call method 'getElementsByTagName' of null 

mq     Marquee_Testing.html:61 

start    Marquee_Testing.html:41 

這是JavaScript:

function start() { 
     new mq('m1'); 
     new mq('m2'); 
     mqRotate(mqr); // must come last 
    } 
    window.onload = start; 

    function objWidth(obj) { 
     if (obj.offsetWidth) return obj.offsetWidth; 
     if (obj.clip) return obj.clip.width; 
     return 0; 
    } 
    var mqr = []; 

    function mq(id) { 
     this.mqo = document.getElementById(id); 
     var wid = objWidth(this.mqo.getElementsByTagName('span')[0]) + 5; 
     var fulwid = objWidth(this.mqo); 
     var txt = this.mqo.getElementsByTagName('span')[0].innerHTML; 
     this.mqo.innerHTML = ''; 
     var heit = this.mqo.style.height; 
     this.mqo.onmouseout = function() { 
      mqRotate(mqr); 
     }; 
     this.mqo.onmouseover = function() { 
      clearTimeout(mqr[0].TO); 
     }; 
     this.mqo.ary = []; 
     var maxw = Math.ceil(fulwid/wid) + 1; 
     for (var i = 0; i < maxw; i++) { 
      this.mqo.ary[i] = document.createElement('div'); 
      this.mqo.ary[i].innerHTML = txt; 
      this.mqo.ary[i].style.position = 'absolute'; 
      this.mqo.ary[i].style.left = (wid * i) + 'px'; 
      this.mqo.ary[i].style.width = wid + 'px'; 
      this.mqo.ary[i].style.height = heit; 
      this.mqo.appendChild(this.mqo.ary[i]); 
     } 
     mqr.push(this.mqo); 
    } 
    function mqRotate(mqr) { 
     if (!mqr) return; 
     for (var j = mqr.length - 1; j > -1; j--) { 
      maxa = mqr[j].ary.length; 
      for (var i = 0; i < maxa; i++) { 
       var x = mqr[j].ary[i].style; 
       x.left = (parseInt(x.left, 10) - 1) + 'px'; 
      } 
      var y = mqr[j].ary[0].style; 
      if (parseInt(y.left, 10) + parseInt(y.width, 10) < 0) { 
       var z = mqr[j].ary.shift(); 
       z.style.left = (parseInt(z.style.left) + parseInt(z.style.width) * maxa) + 'px'; 
       mqr[j].ary.push(z); 
      } 
     } 
     mqr[0].TO = setTimeout('mqRotate(mqr)', 10); 
    } 
+0

退房的答案,類似的帖子: http://stackoverflow.com/questions/337330/javascript-marquee-to-replace-marquee-tags – ovaltein

回答

0

我通過移除

固定這

new mq('m2');

我仍然不知道爲什麼這會影響選框'm1'滾動加載的能力,但在任何情況下都可以解決。