我有个函数 function setdata(id){ 
                  function test(id){
                     
                     }     
                   var t=setInterval(function(id){test(id)},3000);        
             
                 }
       引用函数 var s1=setdata(ss1)
                var s2=setdata(ss2)  这样同时引用的函数 test()会相互影响, 如果不写成 函数调用形式 分开写 t1= test1(){}  t2 = test2{} 这样在同一个页面时不会相互影响的,大家有什么好的解决方法没

解决方案 »

  1.   

    <html>
    <head>
    <script type="text/javascript">
    function setData(id){  
       function test(id){
         document.body.appendChild(document.createTextNode(id)); document.body.appendChild(document.createElement('br'));
      }
       setInterval(function(){test(id);},3000);
       }
    setData("id1");
    setData("id2");
    </script>
    </head>
    <body>
    </body>
    </html>
      

  2.   

    用参数将test隔开。你这里function(id){test(id),这样调用应该是无效的。
    最后id会解析成undefined。你id不管怎么传,结果都是一样的。所以你才会感觉到互相影响了
      

  3.   

      var n=i=t=0;
       function setImg(id){
          id=id+" a";

         if($(id).size()>1)
      {  
            $(id).hover(function(){clearInterval(t)},function(){t=setInterval(function(){changeImg()},3000)})
            n=$(id).size();
        i=0;
       function changeImg(){ i=i+1; 
       if(i==n)
        i=0;
       $(id).filter(":visible").fadeOut(500).parent().children().eq(i).fadeIn(1000);
      }
        t= setInterval(function(){changeImg()},3000);
      }
       }上面是我的源码,就是用JS 实现图片自动切换  一个是可以的 如果有两个以上调用  里面变量和 hover事件就会相互影响, 能不能采用动态变量一类的....
      

  4.   

    你把i,n,t设为全局变量,当然会相互影响了
    像这个情况,建议用setTimeOut,然后把i,n作为函数的参数
      

  5.   

     function setImg(id,n){
            $(id).hover(function(){clearInterval(t)},function(){t=setInterval(function(){changeImg()},3000)})
            n=$(id).size();
      var  i=0;
       function changeImg(){ i=i+1; 
       if(i==n)
        i=0;
       $(id).filter(":visible").fadeOut(500).parent().children().eq(i).fadeIn(1000);
      }
      var  t= setInterval(function(){changeImg()},3000);  
       }
    可以了  谢谢大家