使用数组的setTimeout不起作用

时间:2014-02-14 18:43:51

标签: javascript

我是javascript的新手,我会用这个对象停止所有这些函数,我尝试但是没有工作从不使用setTimeout和数组的mechi:

使用Javascript:

setTimeout(function() {
        var groupSvg = [svgManos, svgSuper, svgInnovation, svgEstatua, svgBrain, svgBalanza];

         groupSvg.stop();

}, 100);

我想在100毫秒后停止所有这些变量。

3 个答案:

答案 0 :(得分:0)

如果每个项目都有停止方法,则需要在每个项目上旋转并调用停止,类似于:

// Dummy object for testing sake
var svgObject = function() {
    this.stop = function() { console.log("Stopping " + this); }
    return this;
};
// create dummy objects based on the base object
var svgManos = new svgObject(),
    svgSuper = new svgObject(),
    svgInnovation = new svgObject(),
    svgEstatua = new svgObject(),
    svgBrain = new svgObject(),
    svgBalanza = new svgObject();

    setTimeout(function(){
        var groupSvg = [svgManos, svgSuper, svgInnovation, svgEstatua, svgBrain, svgBalanza];
        // loop through the groupSvg array
        for(var svg in groupSvg){
            // do something to the current object from the array
            groupSvg[svg].stop();
        }
    }, 100);

http://jsfiddle.net/E6syu/

答案 1 :(得分:0)

如果这些是数组中的元素,并且它是您正在使用的jQuery stop方法,则应该从数组创建一个jQuery对象,通过一次调用对所有元素运行该方法:

setTimeout(function() {
  var groupSvg = [svgManos, svgSuper, svgInnovation, svgEstatua, svgBrain, svgBalanza];
  $(groupSvg).stop();
}, 100);

答案 2 :(得分:0)

我认为你有几个问题:

  • 您正在声明一个数组而不是一个对象。
  • 然后你的数组显然不支持该方法(停止)。

声明这个“后来的”功能:

Object.prototype.later = function (msec, method){
   var arrs = new Array();  
   var that=this //keep this in inner func
   var args = 
   Array.prototype.slice.apply(arguments,[2]);

   if (typeof method === 'string'){
        method = that[method];
   }

   setTimeout(function (){
        method.apply(that,args);
   },msec);

};

//来源:来自“道格拉斯·克罗克福德JavascriptMaster课程

然后使用上面发布的@ mori57循环

   for(var svg in groupSvg){            
        groupSvg[svg].later(100,"stop");
    }