Javascript / JQUery动态变量访问

时间:2009-05-01 09:57:01

标签: javascript jquery

我有一个引用复杂对象的javascript变量(它是幻灯片控件,但这并不重要)

e.g.
var slideshow = new SlideShow();

因为我在页面上有多个幻灯片,我想在不同的页面中访问某些操作通用/重用代码。

我想要在相同的JAVASCRIPT常规中访问包含不同幻灯片实例的不同变量。使用的变量不同取决于当时控制的幻灯片。

所以而不是

slideshow.playSlides();

做类似

的事情
[dynamically get reference to variable containing slideshow].playSlides();

我之前在JavaScript中看过这个并没有找到解决方案,我想知道这是否可以在JQUERY中以某种方式完成?

4 个答案:

答案 0 :(得分:1)

嗯......某些东西必须包含变量,所以这是你需要首先回答的问题。我的想法是将它存储在一个哈希中,起初可能看起来与你不一样:

var slideshows = {};    
slideshows['someslideshowName'] = new SlideShow();

但现在你可以通过名字引用而没有任何问题。

或者看起来像......

window.slideshows = {};
var slideShowName = 'someSlideShowName';
window.slideshows[slideShowName] = new SlideShow();

答案 1 :(得分:1)

如果我理解了这个问题,为什么不创建一个幻灯片阵列并对其进行枚举,这样你就可以有0到N个幻灯片,而不需要重新编码。

var slideshows = [new SlideShow()];

function playSlides() {
   for(var i=0; i < slideshows.length; i++) {
       slideshows[i].playSlides();
   }
}

答案 2 :(得分:1)

我将添加一个完全不同的解决方案,我认为它更有意义:

正如我所说,某事必须包含变量

如果它是由浏览器呈现的控件。我会将实例挂起代表控件的元素。理想情况下,您要为元素分配某种类。所以,之后它非常简单。

$('.theslideshowclass').each(function() {
   this.slideshow = new SlideShow();
});

这是一个jQuery风格的解决方案。我很失望,我第一次没那样做。

答案 3 :(得分:0)

如果它是全局变量,您可以使用window对象:

var name = 'slideshow';
window[name].playSlides();

通常这种事情是不必要的 - 你应该传递你的slideshow变量。你想要实现什么目标?