从eventlistener更新全局变量
Updating global variable from eventlistener
我试图收集页面上所有视频的时间并将它们添加到数组中。下面是代码:
var allvideos = $('video');
var times = [];
for ( i=0; i < allvideos.length; i++ ) {
allvideos[i].addEventListener('loadedmetadata', function() {
videoDuration = this.duration;
times.push(videoDuration);
});
};
如果我在EventListener中的console.log(times),它按预期工作,但如果我在for循环后记录它,它是空的。我不明白为什么会这样。有人能帮忙吗,请解释一下原因?非常感谢。
我使用jQuery和Video.js。
S
考虑你的代码是如何执行的:
- 创建
- 设置事件监听器
- 用console.log 输出
- 事件监听器被调用并推送到
times
数组
times
数组times
数组中的值在times
数组中没有显示videoDuration
s的原因是因为times
在那个时间点是空的。您必须等到所有事件侦听器都被调用之后,才能输出数组中的值。
如果您想在所有事件侦听器被调用后输出数组,那么您可以这样做:
for (var i = 0; i < allvideos.length; i++) {
allvideos[i].addEventListener('loadedmetadata', function() {
times.push(this.duration);
if (times.length === allvideos.length) {
console.log(times);
}
});
};
相关文章:
- 更新后,父视图未在 Electron 中的
上设置全局变量 - 用javascript更新事件函数中的全局变量
- 从函数更新全局变量
- 全局变量在 javascript 中未更新
- 与javascript全局变量范围和更新混淆
- 无法多次更新 jQuery 中 Ajax 调用的全局变量
- 在 NodeJS 中使用和更新全局变量是否安全?
- Javascript 中的全局变量未更新
- 更新 jQuery 中的全局变量
- 在 Javascript 中本地更新全局变量
- AJAX 请求无法读取更新的会话/全局变量
- 在 JavaScript 中回溯,无法更新全局变量
- 节点.JS全局变量未保持更新
- 更新全局变量javascript/html
- JavaScript更新全局变量
- 通过回调更新全局变量
- 为什么我的Javascript全局变量只更新一次?jQuery最后一个子选择器错误
- 在javascript中更新全局变量
- JavaScript全局变量未更新
- 如何在WSO2ESB中创建全局变量-必须是可更新的