使用动态属性键获取javascript对象的属性值
问题描述:
我目前正在研究一个有很多SVG动画的项目。当用户滚动到SVG时,需要触发这些动画。使用动态属性键获取javascript对象的属性值
我决定为每个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代码被逐字而不是使用由所述关于我们函数代替。
我认为这是一个相当常见的JS问题。谁能帮忙?
答
要使用需要使用括号符号的可变访问数组的一个属性:
var animationID = $(this).find(".svg-animation svg").prop('id');
svgAnimations.animationsArray[0][animationID]();
答
可以使用括号记号具有动态可变
检查访问下面的代码对象属性
var animationID = $(this).find(".svg-animation svg").attr('id');
var playAnimation = svgAnimations.animationsArray[0][animationID];
playAnimation();
+0
我绝对尝试过这一点,但当时似乎没有工作。但另一种尝试已证明是成功的。多谢你们 –
您正在寻找'[]'运算符。 – Pointy
'object [animationID]'把变量放在方括号内,而不是点符号。 – bloodyKnuckles
你上面的“数组”被称为item,我没有看到你在下面的任何地方引用'item'。这导致我怀疑这是否是一个命名问题。 – Dellirium