2009-05-01 12 views
0

私はページ上に複数のスライドショーを持っていると私はしたいので、私は複雑なオブジェクトを参照しているjavascriptの変数(それはスライドショーのコントロールですが、それは重要ではありません)Javascriptを/ jQueryの動的変数のアクセス

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

を持っています特定の操作を汎用的なものにアクセスさせる/異なるページのコードを再利用する。

私は、同じジャバスクリプトルーテインでスライドショーの異なるインスタンスを含む異なる種類の変数にアクセスしたいと考えています。使用される変数は、その時点で何のスライドショーが制御されているかによって異なります。

ので、代わりの

​​

は、私はJavaScriptでこの前に見て、解決策を見つけていない、これはjQueryので行うことができる場合、私は思ったんだけどきた

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

ような何かを行いますどういうわけか?

+0

複数のスライドショーをどのようにインスタンス化していますか? – Vikram

+0

"コード内の変数名への参照を持たない"とは、文字通りと言えば、変数がまったく存在できないと言っているからです。 –

+0

実際にはっきりしない...あなたのスライドショーを関数に渡すことはできませんか? – CurtainDog

答えて

1

まあ...変数には変数が含まれている必要がありますので、最初に回答する必要があります。

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

しかし、今は問題なく名前で参照することができます。私の考えは最初にあなたに非常に違って見えるかもしれません、ハッシュ、それを保存することです。

またはそれは次のようになります....

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

私の脳は問題にぶつかったと思う。私たちは皆異なる解釈をしていた –

+0

オブジェクトのプロパティを初期化するには 'var'は必要ありません – James

+0

ポイントを作成しました。修正しました – cgp

0

それはグローバル変数の場合は、windowオブジェクトを使用することができます

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

のものの通常、この種のは、しかし必要はありません - あなたはおそらくあなたのslideshow変数の周りに渡すべきです。あなたは何を達成しようとしていますか?

+0

ストレートウィンドウを使用する危険性は、あなたが意味しないウィンドウのいくつかのプロパティを上書きするということです。 – cgp

+0

(サブプロパティではなく、ウィンドウの特定の空のプロパティだけがわかっている) – cgp

1

私は質問を理解していれば、なぜスライドショーの配列を作成しないと、あなたはNのスライドショーに0を持っているし、再コーディングする必要はありませんので、それらを列挙。 、それはだ場合は、変数

を含まなければなら何かを

私が言ったように:

var slideshows = [new SlideShow()]; 

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

+1別の何かを思い付く、私はインスタンスの名前を付けないのが好きです。誰かがそれから何かを取得する必要があります:) – cgp

1

は、私は全体の多くの理にかなっていると思う完全に異なるソリューションを追加するつもりですブラウザによってレンダリングされるコントロール。私はコントロールを表す要素からインスタンスを外しています。理想的には、何らかの種類のクラスを要素に割り当てています。それで、その後はかなり簡単です。

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

これはjQueryスタイルのソリューションです。私は初めてそれをしなかったことに失望しています。

関連する問題