Js函数始终返回相同的值

时间:2015-10-01 08:56:14

标签: javascript jquery

Js初学者。

我有这样的功能:

generateSteps: function() {
            var stepsLength = this.data.steps.length;
            var dataStepsInit = this.data.steps;
            for (var i = 0; i < stepsLength; i++) {
                var stepsItem = dataStepsInit[i].ITEM;
                var arrayItem = this.animationNodes[stepsItem - 1];
                var transition = this.animationParameters[i].transition;
                var options = this.animationParameters[i].options;
                var speed = this.animationParameters[i].speed;
                var delay = this.animationParameters[i].delay;
                arrayItem.delay(delay).show(transition, options, speed);

                if (dataStepsInit[i].AUDIOID) {
                    var audioClass = dataStepsInit[i].AUDIOID;
                    var audioPlayer = this.template.find("audio." + audioClass);

                    setTimeout(playAudioOnDelay,delay);
                };

                var playAudioOnDelay = function() {
                    audioPlayer[0].pause();
                    audioPlayer[0].currentTime = 0;
                    audioPlayer[0].play();
                };

            }
        }

它的作用是从JSON生成数据并在延迟时逐个显示动画元素。动画部分工作正常。我可以为DOM元素分配所需的动画和延迟,并以正确的顺序显示它们。

但我想在同一时间做的也是延迟播放音频(所以我使用setTimeout)。一切都很好,我在正确的时间播放音频(正确的延迟值),但我总是播放相同的音频(这是最后一个元素)因为 audioPlayer 总是相同的DOM节点。

我认为这与这个或我混合了一个范围有关?

1 个答案:

答案 0 :(得分:2)

试试这个:

BOOST_LOG_INLINE_GLOBAL_LOGGER_DEFAULT

基本上,您的问题如下所示:http://jsfiddle.net/po0rLnwo/

解决方案是:http://jsfiddle.net/gpfuo1s8/

在浏览器中查看控制台。