【发布时间】:2016-07-14 11:40:44
【问题描述】:
我目前正在开发一个包含大量 SVG 动画的项目。当用户滚动到 SVG 时,需要触发这些动画。
我决定为每个 Snap.SVG 动画创建函数,并使用 SVG 的 ID 作为键将它们存储在对象数组中,如下所示:
//Example Object
var item = {
aboutUsSVG: function(){
//aboutUsSVG animation code to go here
}
}
到目前为止,我已经在这里创建了我的代码的 Codepen:
http://codepen.io/decodedcreative/pen/mEpZbx
我成功地创建了对象数组。我有第二个功能,当 SVG 在屏幕上时播放动画。我无法使用动态键访问存储在数组中的动画函数。
如果我知道 SVG 的名称,我可以访问该函数:
var playAnimation = animations.animationsArray[0].ourCompanies;
playAnimation();
但我想写一个可以用于网站上所有动画的解决方案,所以希望在 DOM 中查询 SVG ID,然后查找相应的动画。
所以:
var animationID = $(this).find(".svg-animation svg").attr('id');
var playAnimation = svgAnimations.animationsArray[0].animationID;
playAnimation();
但在上面的代码中,animationID 是按字面意思使用的,而不是被 aboutUs 函数替换。
我认为这是一个相当常见的 JS 问题。有人可以帮忙吗?
【问题讨论】:
-
您正在寻找
[ ]运算符。 -
object[animationID]将变量放在方括号中,而不是点符号。 -
你上面的“数组”被称为项目,我没有看到你在下面的任何地方引用
item。这让我怀疑这是否是一个命名问题。 -
你试过括号符号吗?
标签: javascript jquery javascript-objects