【发布时间】:2013-03-15 17:25:58
【问题描述】:
我有一个这样的数组:
var data = [
{
"title" : "Title 1",
"slideText" : "",
"startTime" : 0
},
{
"title" : "Title 2",
"slideText" : "",
"startTime" : 60
},
{
"title" : "Title 3",
"slideText" : "",
"startTime" : 120
}
];
我在 HTML5 视频上有一个 seeked 事件监听器。当用户寻找时,我需要检查他们在哪里,并确定他们在数组中的哪个索引。例如,他们寻求 72 秒,他们将在 array[1]
现在我有这个:
player.addEventListener("seeked", function(event)
{
currentTime = player.currentTime;
angular.forEach($scope.data, function(value, key)
{
if (currentTime >= $scope.data[key].startTime && currentTime <= $scope.data[key + 1].startTime)
{
$scope.$apply(function()
{
$scope.setActive(key);
});
}
});
});
这一切都有效,直到寻找的时间到达数组的末尾并且$scope.data[key + 1].time 未定义。我应该如何处理这个?我的思绪现在没有走上正轨,我还没有喝咖啡:|
编辑
新功能工作
player.addEventListener("seeked", function(event)
{
currentTime = player.currentTime;
for (var i = 0; i <= $scope.data.length; i++)
{
if ($scope.data[i + 1] != undefined)
{
if (currentTime < $scope.data[i + 1].startTime)
{
$scope.$apply(function()
{
$scope.setActive(i);
});
break;
}
}
else
{
$scope.$apply(function()
{
$scope.setActive($scope.data.length - 1);
});
}
}
});
【问题讨论】:
-
添加结束时间变量,则不需要进行[key + 1]检查。这总是会在最后一个元素上出错。
-
这是我想要避免的。这当然是一种选择,我想我可以以编程方式生成属性。这些数组在别处生成并提供给我
标签: javascript jquery arrays angularjs