javascript 替换另一个变量对象中的变量值

5sxhfpxr  于 2023-02-11  发布在  Java
关注(0)|答案(3)|浏览(190)

我有一个滚动插件,初始化后存储在特定的ID滚动量。
我使用jQuery获取div的id并将其存储在变量bid中。

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

在控制台中,var bid返回元素ID。(这可以正常工作)
由于滚动量存储在DOM元素ID特定的对象中

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

上述代码无效

变量BID包含元素的ID。
如果我在控制台中输入elementID.scrollData.scrollPosition[0][0],它会完全返回滚动量。其中elementID是水平容器的特定ID。
谁能告诉我出什么事了?

溶液1:window[bid].scrollData.scrollPosition[0][0]
溶液2:eval(bid).scrollData.scrollPosition[0][0]
注意:切勿使用eval()eval()速度慢且存在安全风险

dffbzjpn

dffbzjpn1#

由于bid只是包含element-id的字符串,但您需要一个包含实际dom-element的jQuery对象,因此代码应为:

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

$('#'+bid)根据bid中存储的ID获取元素。
在这个插件的情况下,元素存储在一个全局变量(顺便说一句,这是非常糟糕的编程风格),所以你可以使用以下命令来访问它们:

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

o7jaxewo2#

我认为您应该存储位置而不是ID

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

jecbmhm33#

请执行以下操作:

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

相关问题