1

問題:「動的」変数を使用して JSON/JavaScript 配列にアクセスしようとしています。

# 例 #

代わりに... array1[ ]またはarray2[ ]またはarray9000[ ]

のようなもの... var my_array = 'array' + 'some generated number' ;

次に... my_array[ ]またはmy_array [some number] しかし

、これは機能しません... (解決策は下部にあります)



JSON配列を作成するために、いくつかのディレクトリに加えてコンテンツを読み取るPHPがいくつかあります。JSON 配列は順番に名前が付けられ、画像ディレクトリを格納しています...

JSON 配列名の例: 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);
    ?>


次に、クリック関数を介して、これらの順番に名前が付けられた JSON 配列にアクセスしようとしている Javascript/Jquery があります。この関数は、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-


dweller のおかげで、このコードは動作します...

<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]})
4

2 に答える 2

2

JSではそれができないと確信しています。変数 content を変数名として使用することはできません。これは、あなたができるphpで実現可能です

$varname = 'x';

$$varname = "something";

print $x; //Prints "something"

ただし、javascript ではありません。それを行うには、多次元配列またはハッシュを使用するだけです。

于 2012-04-29T20:36:58.277 に答える
0

簡単な答え: 数値化された変数はwindowオブジェクトでアクセス可能で、配列 ( window['images1']) のようにアクセスできる必要があるため、変更するだけです

{ src: ARRAY[1]}

{ src: window[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] }
于 2012-04-29T21:06:47.753 に答える