问题:尝试使用“动态”变量来访问JSON / JavaScript数组。
#EXAMPLE#
而不是...... array1 [] 或 array2 [] 或甚至array9000 []
<登记/>
类似...... var my_array ='array'+'some generated number';
然后只是... my_array [] 或 my_array [某个号码]
但是这样做'工作...... (溶解现在在底部)
我有一些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]})
答案 0 :(得分:2)
我很确定你不能在JS中这样做。您不能将变量内容用作变量名称。这在php中是可行的,你可以做到
$varname = 'x';
$$varname = "something";
print $x; //Prints "something"
但不是在javascript中。只需使用多维数组或哈希即可。
答案 1 :(得分: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] }