1

问题:尝试使用“动态”变量来访问 JSON/JavaScript 数组。

# 示例 #

而不是... array1[ ]array2[ ]甚至array9000[ ]

类似... var my_array = 'array' + 'some generated number' ;

然后只是... my_array[ ]my_array[some number]

但是这不起作用...(解决方案现在在底部)



我有一些 PHP 正在读取一些目录以及创建 JSON 数组的内容。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);
    ?>


然后我有一些 Javascript/Jquery 正在“尝试”通过点击函数访问这些按顺序命名的 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-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 中做到这一点。您不能将变量内容用作变量名。这在你可以做的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 回答