JavaScript警告动态创建变量名

问题描述:

我得到了如下代码:JavaScript警告动态创建变量名

var image1 = 'aaa.jpg'; 
var image2 = 'bbb.jpg'; 
var image3 = 'ccc.jpg'; 
var image4 = 'ddd.jpg'; // all dynmically created 

current = 1; // dynamically changing value, in this case between 1 and 4 

我现在需要的是提醒alert(image1);,但在这条路上:alert(image + current);

它甚至有可能这样?我希望我能清楚地解释我需要什么。

+0

这就是一个很好的解决方案杰克,不容易用PHP创建,但可以工作:D – donbingo

+0

如何使用PHP创建变量?看起来有点像[XY问题](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)。 – insertusernamehere

+0

像这样:

这样来做:

this.image1 = "aaa.jpg"; 

alert(this["image" + "1"]); 
+0

这样也行,所以我接受:) – donbingo

从我所看到的,我认为你已经走上了正确的道路。但这里有一些事情要考虑...

  1. 加上引号动态创建变量来使他们的字符串:

var image1 = 'aaa.jpg';

  1. 当你把警告框放在引号中也会用'image'这个词。这样,这将是一个字符串太:
  2. alert(eval('image'+current));

    1. 的警告框不会实际显示图像。它只会显示存储在变量中的图像的名称。我认为这就是你要做的。
    2. 祝你好运!

      我看到你编辑了问题,把它放在引号中的动态变量。做得好。

    开始=>
开始=>
+0

1:我做了oO 2:它警告“image1”,但不是image1的值3:wth xD – donbingo

我解决它的方法之一用户发布,并删除他的答案(为什么?):

alert(eval('image'+current)); 

因为它在意见建议和根据您的PHP代码评论:创建一个JavaScript数组来存储您的数据,而不是创建大量变量。你可以完成它,例如像这样:

创建一个包含所有图像

<?php 
    $images = ''; 
    while($row = mysqli_fetch_assoc($result)) { 
     $images .= ($images ? ',' : '') . '"' . $row['image'] . '"'; 
    } 
?> 

输出

var images = [<?php print $images; ?>]; 
alert (images[0]); 

你显然与收集工作的字符串,所以你应该创建在这种情况下的阵列结构:

<?php 

$images = []; 
while ($row = mysqli_fetch_assoc($ergebnis)) { 
    $images[] = $row['image']; 
} 

?> 
<script type="text/javascript"> 
var images = <?php echo json_encode($images) ?>; 
</script> 

然后,您可以通过(例如)参考每个图像路径。 images[0]