【问题标题】:js event for when statement becomes true inside function当语句在函数内部变为真时的js事件
【发布时间】:2012-08-03 11:54:45
【问题描述】:

好的,我正在使用 vimeo api,它为我的函数提供了一些包含我的视频播放百分比的数据。我想用它来查找视频何时结束,然后“重新打开灯”。这是我的代码:

    function onplayProgress(data, id) {
$('#bottomtag').text(data.percent*100 + '% played');

    if ( data.percent == '1') {
$('body').animate({ backgroundColor: 'gray' }, 3000);
    }

}

#bottomtag 只是为了调试,但它正确显示了进度并最终达到 100% 并保持在那里。所以我不明白为什么我的动画没有发生。我真的很密集吗?我觉得在语义上应该有一个“当”而不是“如果”,但那不存在。

=========编辑=========

正如 Zeta 所指出的,我可以使用一个 Finish 事件。但是,我希望我的“灯”以 99% 的播放率上升,我也想知道为什么我的代码不起作用。我试过了~

if ( data.percent == '0.990')

~ 还是不行。关于此函数的调用,它与 Vimeo api 挂钩:

player.addEvent('playProgress', onplayProgress);

【问题讨论】:

  • 看来onplayProgress() 函数会被多次调用,而不是仅仅一次,所以使用if 语句应该是正确的。但是,由于不熟悉您使用的 API,我不能肯定。

标签: javascript jquery vimeo


【解决方案1】:

API 提供了一个finish 事件。请改用它来检查您的视频是否已播放完毕。

编辑:99% 后如何点亮灯?

这有点棘手,但仍然很容易实现:

function onplayProgress(data, id) {
    $('#bottomtag').text(data.percent*100 + '% played');
    if ( data.percent >= 0.990 && $('body').data("has-been-animated") !== true) {
        $('body').animate({ backgroundColor: 'gray' }, 3000);
        $('body').data("has-been-animated",true);
    }
}

【讨论】:

  • 大声笑我一定错过了。我觉得奇怪的是它不在那里。但是我仍然想了解为什么我的代码不起作用。我决定在学分滚动时亮起灯 I.E. (data.percent == '0.990')
  • 不要对数字使用字符串比较。那个可怜的东西:(。对浮点数的相等性测试也很棘手,使用data.percent >= 0.990并使用单独的变量来检查你是否已经为背景设置了动画。
  • 感谢您详细介绍,现在我已经学会了。我保证永远不会再对数字这样做:}
【解决方案2】:

如果 data.percent = '1.00' 的值(作为字符串)那么你的 if 将失败,因为 '1' != '1.00'

【讨论】:

  • 大声笑刚刚看到第一个答案。 finish 听起来确实更合适:)
  • 你不仅要指出错误,还要尝试给出解决方案。没有finish,他怎么解决这个问题?显然 OP 不知道 JavaScript 中字符串和数字比较之间的区别。尝试指出这一点以改善您的答案:)。
  • 干杯我明白你的意思,下次我会添加更多解释:) 如果身体上的动画已经执行,你使用$('body').data("has-been-animated") 的解决方案是否有点脆弱?也许更好地使用特定的布尔值? (我会评论你的回答,但我没有足够的声誉)
  • $('body').data("has-been-animated") 将是 undefined,除非条件被触发。那么$('body').data("has-been-animated") 将是true,因此-by 条件将为假。
  • 啊,我看到了我的错。我从没见过 jQ 的 data()
猜你喜欢
  • 2015-02-18
  • 1970-01-01
  • 1970-01-01
  • 2020-07-05
  • 1970-01-01
  • 1970-01-01
  • 2019-09-29
  • 2020-12-10
  • 2018-11-29
相关资源
最近更新 更多