Javascript:在另一个变量对象中替换变量值

时间:2012-09-08 10:18:29

标签: javascript javascript-events

我有一个滚动插件,在初始化后将滚动量存储在特定的ID中。

我正在使用jQuery来获取div的id并将其存储在变量出价中。

var bid = $(this).parent().parent().find(".video_s").attr('id');

在console var bid中返回元素ID。 (这可以正常工作)

由于滚动量存储在特定于DOM元素ID的对象

var bpos = bid.scrollData.scrollPosition[0][0];

上面的代码无效

变量出价包含元素的ID。

如果我在控制台中键入elementID.scrollData.scrollPosition[0][0],它会完全返回滚动量。其中elementID是水平容器的特定ID。

请有人告诉我什么是错的。

解决方案1: window[bid].scrollData.scrollPosition[0][0]

解决方案2: eval(bid).scrollData.scrollPosition[0][0]

注意:永远不要使用eval()。 eval()速度慢且存在安全风险

3 个答案:

答案 0 :(得分:0)

由于bid只是包含element-id的字符串,但是你需要一个包含实际dom元素的jQuery Object,代码应为:

var bpos = $('#'+bid).scrollData.scrollPosition[0][0];

$('#'+bid)根据出价中存储的ID获取元素。

在这个插件的情况下,元素存储在一个全局变量中(这是非常糟糕的编程风格),因此您可以使用以下命令来访问它们:

window[bid].scrollData.scrollPosition[0][0];

答案 1 :(得分:0)

我认为你应该存储位置而不是id

var bid = $(this).parent().parent().find(".video_s").attr('id');
var bpos = $('#'+bid).scrollData.scrollPosition[0][0]

答案 2 :(得分:0)

这样做:

$('#'+bid).scrollData.scrollposition[0][0];