来源:http://bbs.csdn.net/topics/320198202
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>模拟多线程</title>
<script type="text/javascript">
var TP = [];
function $(id){
return document.getElementById(id);
}
function debug(msg){
$("msg").innerHTML += msg + "<br/>";
$("msg").scrollTop += 50;
}
function ThreadA(){
TP = [];
TP.push(setTimeout(A1, 400));
TP.push(setTimeout(A2, 800));
TP.push(setTimeout(arguments.callee, 1000));
}
function A1(){
debug(new Date().toLocaleTimeString() + " 1: " + $("tableA").getElementsByTagName("input")[0].value );
}
function A2(){
debug(new Date().toLocaleTimeString() + " 2: " + $("tableA").getElementsByTagName("input")[0].value );
}
function ThreadB(){
debug(new Date().toLocaleTimeString() + " TB : " + $("tableB").getElementsByTagName("input")[0].value );
}
function doEvent(){
//中止A线程
for(var i = 0; i < TP.length; i++){
clearTimeout(TP[i]);
}
TP = [];
//删除tableA, 创建tableB
var html = $("tableA").parentNode.innerHTML.replace(/tableA/g, "tableB");
$("tableA").parentNode.innerHTML = html;
$("tableB").getElementsByTagName("input")[0].value = "";
//启动线程B
setTimeout(ThreadB, 1000);
}
window.onload = function(){
TP.push(setTimeout(ThreadA, 1000));
};
</script>
</head>
<body>
<table border="0">
<tr><td width="50%" valign="top">
<div id="tableA">tableA:<input /></div>
</td><td>
<input type="button" value="触发事件" οnclick="doEvent()" />
<div id="msg" style="width:300px; height:300px; overflow:auto"></div>
</td></tr>
</body>
</html>