Javascript Js函数总是返回相同的值
这里是初学者 我有这样一个函数:Javascript Js函数总是返回相同的值,javascript,jquery,Javascript,Jquery,这里是初学者 我有这样一个函数: generateSteps: function() { var stepsLength = this.data.steps.length; var dataStepsInit = this.data.steps; for (var i = 0; i < stepsLength; i++) { var stepsItem = dataStepsInit[i
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();
};
}
}
generateSteps:function(){
var stepsLength=this.data.steps.length;
var datastepsini=this.data.steps;
对于(变量i=0;i
它所做的是从JSON生成数据,并在延迟时逐个显示动画元素。动画部分工作良好。我可以为DOM元素分配所需的动画和延迟,并按正确的顺序显示它们
但我想同时做的是在延迟时播放音频(所以我使用setTimeout)。一切都很好,我在正确的时间(正确的延迟值)播放音频,但我始终播放相同的音频(这是最后一个元素),因为audioPlayer始终是相同的DOM节点
我认为这与这个有关,还是我混合了一个范围 试试这个:
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(audioPlayer),delay);
};
}
function playAudioOnDelay(audioPlayer){
return function(){
audioPlayer[0].pause();
audioPlayer[0].currentTime = 0;
audioPlayer[0].play();
}
}
}
generateSteps:function(){
var stepsLength=this.data.steps.length;
var datastepsini=this.data.steps;
对于(变量i=0;i
基本上,您的问题如下所示:
解决办法是:
检查浏览器中的控制台。谢谢。现在我将记住使用返回函数。你能解释一下为什么要创建var t吗?var t=设置超时(播放AudioOnDelay(音频播放器),延迟);抱歉..没有意义使用
var t
。在我得到你的答案之前,我一直在消磨时间。编辑。