关于Jscript的多线程

仔细分析的51JS的一段关于Jscript的多线程的脚本,原来是通过元素marquee实现的,好像img也可以实现。

注解见下:
 

<script type="text/javascript">

//定义一过程
//var addCount = new Function("tagThread.innerHTML = tagThread.innerHTML * 1 + 1");

//var addCount = new Function("alert();");

//可实现多个线程,见下。

var addCount1 = function(){tagThread1.innerHTML = tagThread1.innerHTML * 1 + 1};

var addCount2 = function(){tagThread2.innerHTML = tagThread2.innerHTML * 1 - 1};

//生成线程类
var thrd = new Thread(1000);

thrd.Start(addCount1);//开始一线程
thrd.Start(addCount2);//又开始一线程


//以下是类定义部分:

function Thread(Timer)
{

 var thArr = [];  //相当于 var thArr = new Array();

 this.toString = function(){return "测试线程实例。"};//类字符串化,方法重写,很受启发。
 this.Timer = Timer || 1000; //如果Timer有初值, 否则Timer为1000 ,JS语言的特殊性,易读性不好,不好。

 //加入生成一个滚动元素marquee
 this.Tag = self.document.createElement("marquee");
 this.Tag.appendChild(self.document.createTextNode("-"));
 this.Tag.scrollDelay = this.Timer;

 //将滚动元素marquee加入div中
 var _div = document.createElement("div");
 _div.style.height = 1;
 //_div.style.overflow = "hidden";
 _div.appendChild(this.Tag);

 //滚动事件
 this.Tag.onscroll = function(){
  for(var i = 0; i < thArr.length; i++)
   thArr[i](); //执行多个事件函数???第一次知道!以前只知道C#是可以这样的。
 }

 //将div加入document中
 new function main() //类初试化
 {
  if(self.document.readyState != "complete") //如果文档未完成
   return setTimeout(main);    //继续调用
  self.document.body.appendChild(_div);    //直到文档调用完成后,加入_div(带滚动条的)
 }

 this.Start = function(thread)
 {
  thArr.push(thread); //函数元素入栈
 }
}
</script><body>执行次数:<span id="tagThread1">0</span>
<br><span id="tagThread2">100</span>
<br>
<input type=button value="弹出框" οnclick="alert(thrd)">
</body></html>

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值