<DIV id=demoleft style="OVERFLOW: hidden; WIDTH: 960px; COLOR: #ffffff">
<TABLE border=0 cellPadding=0 cellSpacing=0 cellspace="0">
<TBODY>
<TR>
<TD id=demo1left vAlign=top align=middle>
<TABLE cellSpacing=0 cellPadding=2 border=0>
<TBODY>
<TR align=middle>
<TD><a href="yikatong/Bulletin.aspx?bl_Id=5330" target="_blank"><img src="http://www.shuangyongjulebu.com/ImagesScroll/kSNV30424.jpg" width="170" height="140" border="0" /></a></TD>
<TD><a href="yikatong/Bulletin.aspx?bl_Id=5330" target="_blank"><img src="http://www.shuangyongjulebu.com/ImagesScroll/kSNV30424.jpg" width="170" height="140" border="0" /></a></TD>
<TD><a href="yikatong/Bulletin.aspx?bl_Id=5324" target="_blank"><img src="http://www.shuangyongjulebu.com/ImagesScroll/kSNV30418.jpg" width="170" height="140" border="0" /></a></TD>
<TD><a href="yikatong/Bulletin.aspx?bl_Id=5331" target="_blank"><img src="http://www.shuangyongjulebu.com/ImagesScroll/kSNV30501.jpg" width="170" height="140" border="0" /></a></TD>
<TD><a href="yikatong/Bulletin.aspx?bl_Id=5330" target="_blank"><img src="http://www.shuangyongjulebu.com/ImagesScroll/kSNV30424.jpg" width="170" height="140" border="0" /></a></TD>
<TD><a href="yikatong/Bulletin.aspx?bl_Id=5330" target="_blank"><img src="http://www.shuangyongjulebu.com/ImagesScroll/kSNV30424.jpg" width="170" height="140" border="0" /></a></TD>
<TD><a href="yikatong/Bulletin.aspx?bl_Id=5324" target="_blank"><img src="http://www.shuangyongjulebu.com/ImagesScroll/kSNV30418.jpg" width="170" height="140" border="0" /></a></TD>
<TD><a href="yikatong/Bulletin.aspx?bl_Id=5331" target="_blank"><img src="http://www.shuangyongjulebu.com/ImagesScroll/kSNV30501.jpg" width="170" height="140" border="0" /></a></TD>
</TR></TBODY></TABLE></TD>
<TD id=demo2left vAlign=top></TD></tr></tbody></table> </DIV>
<SCRIPT>
 
var speed=20//速度数值越大速度越慢,demo2.offsetWidth=demo1.offsetWidth=固定值
demo2left.innerHTML=demo1left.innerHTML
function Marquee(){
if(demo2left.offsetWidth-demoleft.scrollLeft<=0)//其实demo.scrollLeft是有 最大值的,和demo0.width,引用的图片的width有关系。demo过了一半(每半内容一样的),重新开始循环
demoleft.scrollLeft-=demo1left.offsetWidth
else{
demoleft.scrollLeft++//不断的增加,相当于父容器的滚动条不断是缩小;但由于OVERFLOW: hidden; (滚动条不可见)
}
}
var MyMarleft=setInterval(Marquee,speed)
demoleft.onmouseover=function() {clearInterval(MyMarleft)}
demoleft.onmouseout=function() {MyMarleft=setInterval(Marquee,speed)}</SCRIPT>
<DIV id=demoleft style="OVERFLOW: hidden; WIDTH: 960px; COLOR: #ffffff">
<TABLE border=0 cellPadding=0 cellSpacing=0 cellspace="0">
<TBODY>
<TR>
<TD id=demo1left vAlign=top align=middle>
<TABLE cellSpacing=0 cellPadding=2 border=0>
<TBODY>
<TR align=middle>
<TD><a href="yikatong/Bulletin.aspx?bl_Id=5330" target="_blank"><img src="http://www.shuangyongjulebu.com/ImagesScroll/kSNV30424.jpg" width="170" height="140" border="0" /></a></TD>
<TD><a href="yikatong/Bulletin.aspx?bl_Id=5330" target="_blank"><img src="http://www.shuangyongjulebu.com/ImagesScroll/kSNV30424.jpg" width="170" height="140" border="0" /></a></TD>
<TD><a href="yikatong/Bulletin.aspx?bl_Id=5324" target="_blank"><img src="http://www.shuangyongjulebu.com/ImagesScroll/kSNV30418.jpg" width="170" height="140" border="0" /></a></TD>
<TD><a href="yikatong/Bulletin.aspx?bl_Id=5331" target="_blank"><img src="http://www.shuangyongjulebu.com/ImagesScroll/kSNV30501.jpg" width="170" height="140" border="0" /></a></TD>
<TD><a href="yikatong/Bulletin.aspx?bl_Id=5330" target="_blank"><img src="http://www.shuangyongjulebu.com/ImagesScroll/kSNV30424.jpg" width="170" height="140" border="0" /></a></TD>
<TD><a href="yikatong/Bulletin.aspx?bl_Id=5330" target="_blank"><img src="http://www.shuangyongjulebu.com/ImagesScroll/kSNV30424.jpg" width="170" height="140" border="0" /></a></TD>
<TD><a href="yikatong/Bulletin.aspx?bl_Id=5324" target="_blank"><img src="http://www.shuangyongjulebu.com/ImagesScroll/kSNV30418.jpg" width="170" height="140" border="0" /></a></TD>
<TD><a href="yikatong/Bulletin.aspx?bl_Id=5331" target="_blank"><img src="http://www.shuangyongjulebu.com/ImagesScroll/kSNV30501.jpg" width="170" height="140" border="0" /></a></TD>
</TR></TBODY></TABLE></TD>
<TD id=demo2left vAlign=top></TD></tr></tbody></table> </DIV>
<SCRIPT>
(function(){
var speed=20//速度数值越大速度越慢,demo2.offsetWidth=demo1.offsetWidth=固定值
demo2left.innerHTML=demo1left.innerHTML
function Marquee(){
if(demo2left.offsetWidth-demoleft.scrollLeft<=0)//其实demo.scrollLeft是有 最大值的,和demo0.width,引用的图片的width有关系。demo过了一半(每半内容一样的),重新开始循环
demoleft.scrollLeft-=demo1left.offsetWidth
else{
demoleft.scrollLeft++//不断的增加,相当于父容器的滚动条不断是缩小;但由于OVERFLOW: hidden; (滚动条不可见)
}
}
var MyMarleft=setInterval(Marquee,speed)
demoleft.onmouseover=function() {clearInterval(MyMarleft)}
demoleft.onmouseout=function() {MyMarleft=setInterval(Marquee,speed)}
})();
</SCRIPT>

解决方案 »

  1.   


    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
     <HEAD>
      <TITLE> New Document </TITLE>
      <META NAME="Generator" CONTENT="EditPlus">
      <META NAME="Author" CONTENT="">
      <META NAME="Keywords" CONTENT="">
      <META NAME="Description" CONTENT="">
     </HEAD> <BODY>
     代码段 
     <div id='div1'>
     </div>
      <script>
      var div=document.getElementById('div1');
      var a;
      div.appendChild(document.createElement("<br>"));
        div.appendChild(document.createTextNode("没使用Closure "));
    div.appendChild(document.createElement("<br>"));
       for(var i=0;i<5;i++)
       {
           div.appendChild(document.createElement("<br>"));
           a=document.createElement("<a>");    
       a.innerText='超链'+i;
       a.href='javascript:void 0';
       
       a.onclick=function(){alert(i);};
       div.appendChild(a);
           div.appendChild(document.createElement("<br>"));
       }
       div.appendChild(document.createElement("<br>"));
        div.appendChild(document.createTextNode("new Function 的形式使用Closure "));
    div.appendChild(document.createElement("<br>"));
    for(var i=10;i<15;i++)
       {
           div.appendChild(document.createElement("<br>"));
           a=document.createElement("<a>");    
       a.innerText='超链'+i;
       a.href='javascript:void 0';
       
       a.onclick=new Function('alert('+i+')');
       div.appendChild(a);
           div.appendChild(document.createElement("<br>"));
       }
        div.appendChild(document.createElement("<br>"));
        div.appendChild(document.createTextNode("(function(){})(); 的形式使用Closure "));
    div.appendChild(document.createElement("<br>"));
    for(var i=20;i<25;i++)
       {
           div.appendChild(document.createElement("<br>"));
           a=document.createElement("<a>");    
       a.innerText='超链'+i;
       a.href='javascript:void 0';
       
       (function(){
               var temp=i;
       a.onclick=function(){alert(temp);};
           })();
       div.appendChild(a);
           div.appendChild(document.createElement("<br>"));
       }
        </script>
     </BODY>
    </HTML>
      

  2.   

    什么是闭包:当内部函数 在定义它的作用域 的外部 被引用时,就创建了该内部函数的闭包 ,如果内部函数引用了位于外部函数的变量,当外部函数调用完毕后,这些变量在内存不会被 释放,因为闭包需要它们.理解闭包就会用到作用域链:
    作用域链是描述一种路径的术语,沿着该路径可以确定变量的值 .当执行a=0时,因为没有使用var关键字,因此赋值操作会沿着作用域链到var a=4;  并改变其值.