2012-04-29 20 views
1

問題: JSON/JavaScript配列にアクセスするために '動的な'変数を使用しようとしています。代わり... ARRAY1 [] 又は配列2 [] 又は

#例#

も[]

気にいら様... VAR my_arrayで=「配列をarray9000 '+'生成された数字をいくつか ';

それからちょうど... my_arrayで[] または my_arrayで[いくつかの番号]

しかし、このdoes'nt作品...(下部のNOW
sollution

JavaScript配列名としての変数



JSON配列を作成するためにいくつかのディレクトリにPLUSの内容を読み込んでいるPHPがあります。
images0、images1、images2、等...

<?php 
     $dir = opendir(getcwd()); 
     $num=0; 
     while($folder = readdir($dir)) { 
      if($folder !== '.' && $folder !== '..'){ 
       if (is_dir($folder)) { 
        echo '<script type="text/javascript">'; 
        $folderCHILD = opendir($folder); 
        while($image = readdir($folderCHILD)) { 
         if($image !== '.' && $image !== '..'){ 
          $images[]=$folder."/".$image; 
         } 
        } 
        closedir($folderCHILD); 
        echo 'images'.$num.' ='.json_encode($images); 
        unset($images); 
        echo '</script>'; 
        $num++; 
       } 
      } 
     } 
     closedir($dir); 
    ?> 


それから私持っているいくつかのJavascriptを/ jQueryの:

例JSONの配列名... JSONアレイが順次命名されていると、彼らは、画像ディレクトリを格納していますこれは、クリック機能を使用してこれらの名前付きJSON配列にアクセスしようとする試みです。この関数は、JSON配列に格納されているイメージディレクトリを使用してイメージを作成します。

<script type="text/javascript"> $(document).ready(function() { $('something').click(function() { var indexCURRENT = $(this).index(); var ARRAY = 'images'+indexCURRENT; $(document.createElement("img")).attr({ src: ARRAY[some number]}).addClass("image").appendTo('body'); }); }); </script> 

は、上記Javascipt/jqueryのは動作しません^^


しかしDEV-nullで住人コードのこのビットが行う仕事のおかげで...

<script type="text/javascript"> 
    $(document).ready(function() { 
     $('#gallery_link p').click(function() { 
      var indexCURRENT = $(this).index(); 
      var ARRAY = 'images'+indexCURRENT; 
      $(document.createElement("img")).attr({ src: window[ARRAY][some number]}).addClass("image").appendTo('body'); 
     }); 
    }); 
</script> 

ザ・差?

.attr({ src: window[ARRAY][some number]}) 
+0

は何をしようとするその最も基本的な形にまで蒸留してみてください。それを示すためにテスト用のコードを書き直してください。あまりにも多くの情報がここにあります。 –

答えて

0

クイック答え:あなたの数値化変数はwindowオブジェクトにアクセスできる必要があり、配列(window['images1'])のようにアクセスので、単に

{ src: window[ARRAY][1] } 

{ src: ARRAY[1]} 

を変更するには、それを動作させる必要があります。

適切な答え:使用のアレイ/オブジェクトは、このように簡単です:

<script> 
echo '<script type="text/javascript">'; 
echo 'images = [];'; 
$folderCHILD = opendir($folder); 
while($image = readdir($folderCHILD)) { 
    if($image !== '.' && $image !== '..' && $folder !=='resource'){ 
     $images[]=$folder."/".$image; 
    } 
} 
closedir($folderCHILD); 
echo 'images.push('.json_encode($images).');'; 
echo '</script>'; 

そして:

{ src: images[indexCUR][1] } 
+0

ありがとう!私はそれを試してみるよ! – Terry

+0

あなたの意見をお寄せいただきありがとうございます。私はあなたの「正しい」答えを得ることができませんでした。ありがとうございました! – Terry

2

JSでそれを行うことはできません。可変内容を変数名として使用することはできません。これは可能なPHPで実現可能です

$varname = 'x'; 

$$varname = "something"; 

print $x; //Prints "something" 

しかし、JavaScriptではありません。それを行うには、多次元配列またはハッシュを使用してください。

+0

情報をありがとう、それはjavascriptで可能ではなかったか分からなかった。 @ Gaet So ...多次元配列を試してみましたが、多次元配列をjavascriptで動的に作成することはできませんでした。あなたの情報のおかげで、私はPHPの中でそれを設定しようとしています。 – Terry

関連する問題