javascript 實現連續滾動

來源:互聯網
上載者:User

<script language="JavaScript" defer>
//qswh's original and modifid by windy_sk <windy_sk@126.com> 20040120

function reportError(msg,url,line) {
 var str = "You have found an error as below: \n\n";
 str += "Err: " + msg + " on line: " + line;
 alert(str);
 return true;
}

window.onerror = reportError; 

var obj_marquee = document.getElementById("marquee");
var repeat = null;
var marquee_spd = 50;

function marquee_init() {
 var obj_unit = obj_marquee.firstChild;
 var marquee_high = parseInt(obj_marquee.style.height);
 var marquee_wide = parseInt(obj_marquee.style.width);
 var unit_high = obj_unit.offsetHeight;
 var unit_wide = obj_unit.offsetWidth;
 var m = 0, n = 0, i = 0;
 var tmp = null;
 
 m = Math.ceil(marquee_wide / unit_wide);
 n = Math.ceil(marquee_high / unit_high);

 obj_unit.style.width = marquee_wide * (m+1);
 obj_unit.rows[0].cells[0].style.width = obj_marquee.style.width;
 
 for(i=0; i<m; i++) {
  tmp = obj_unit.rows[0].insertCell(-1);
  tmp.innerHTML = obj_unit.rows[0].cells[0].innerHTML;
  tmp.style.width = marquee_wide;
  tmp = null;
 }

 for(i=0; i<n; i++) {
  obj_marquee.appendChild(obj_unit.cloneNode(true));
 }

 return;
}

function marquee_show(direction) {
 switch(direction) {
  case "up":
   if(obj_marquee.scrollTop >= obj_marquee.children[1].offsetTop) {
    obj_marquee.scrollTop -= obj_marquee.firstChild.offsetHeight;
   } else {
    obj_marquee.scrollTop++;
   }
   break;
  case "down":
   if(obj_marquee.scrollTop <= 0) {
    obj_marquee.scrollTop += obj_marquee.firstChild.offsetHeight;
   } else {
    obj_marquee.scrollTop--;
   }
   break;
  case "left":
   if(obj_marquee.scrollLeft >= obj_marquee.firstChild.rows[0].cells[0].offsetWidth) {
    obj_marquee.scrollLeft -= obj_marquee.firstChild.rows[0].cells[0].offsetWidth;
   } else {
    obj_marquee.scrollLeft++;
   }
   break;
  case "right":
   if(obj_marquee.scrollLeft <= 0) {
    obj_marquee.scrollLeft += obj_marquee.firstChild.rows[0].cells[0].offsetWidth;
   } else {
    obj_marquee.scrollLeft--;
   }
   break;
  default:
   break;
 }
 return;
}

function marquee_doit() {
 var direction = "";
 direction = obj_marquee.getAttribute("direction");
 if(direction != null) marquee_show(direction);
 direction = obj_marquee.getAttribute("direction2");
 if(direction != null) marquee_show(direction);
 return;
}

marquee_init();
repeat = setInterval("marquee_doit()",marquee_spd);

marquee.onmouseover = function() {clearInterval(repeat);}
marquee.onmouseout = function() {repeat=setInterval("marquee_doit()",marquee_spd);}
</script>

<table style="border:0px black solid;"><tr><td>
<div id="marquee" direction="up" style="overflow:hidden;height:200px;width:250px">
  <table style="border:0px;padding:0px;"><tr><td>
    <!-- Marquee Body Head -->
    <a href="#" target="_blank">經典論壇</a><br>
    <a href="#" target="_blank">163.com</a><br>
    <a href="#" target="_blank">21cn.com</a><br>
    <a href="#" target="_blank">Happy new year</a>
    <!-- Marquee Body Bottom -->
  </td></tr></table>
</div>
</td></tr></table>

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.