0

这应该很简单,而且像往常一样,由于我自学代码的方式不够彻底,我可能会忽略一些东西。希望这是有道理的......

在一个 php 循环中,我有这个:

var key = <?php echo json_encode($key); ?>;
var id<?php echo $key;?> = <?php echo json_encode($value['Claim']['id']); ?>;
var point<?php echo $key;?> = <?php echo json_encode($value['Claim']['point']); ?>;

就像我想要的那样评估。所以 id2 等于 id2 应该是什么,等等。

然后稍后我需要调用这些变量,如下所示:

var takeurl = '/api/response.json?point='+ point + '&id=' + id;

除了我希望“point”和“id”成为“point2”或“point4”的值,或者简而言之,point+key。

如果我把它写成

var takeurl = '/api/response.json?point='+ point + key + '&id=' + id;

它返回“point”的值加上“key”的值,而不是 point2 或 point3 的值。

然后我意识到,一开始,在声明这些值时,我不应该一直点击 php。我应该能够做类似的事情:

var key = <?php echo json_encode($key); ?>;
var id[key] = <?php echo json_encode($value['Claim']['id']); ?>;
var point{"key"} = <?php echo json_encode($value['Claim']['point']); ?>;

然后使用相同的约定创建新变量。我读过类似的问题,其中答案涉及使用数组,但同样,这一切都在一个更大的 php 循环中,所以我认为这不适合这里的情况。

对不起,我希望这很清楚。我在这个上赢得了我的用户名。想法?

编辑添加:问题与我上面解释的有点不同。我的代码显然是在提取循环中出现的最终变量的值(好像我根本没有通过“关键”区别来定义它们,而只是定义了“点”五次)。我担心我根本没有意义。这是一些代码,因此您可以看到发生了什么:codepad.org/ETX5dI6C

例如,当单击页面上的第四个链接时,我需要的是拉取 id4 和 point4 的值。相反,无论我单击哪个链接,它都会传递最后定义的 id5 和 point5 的变量。我不明白?

4

2 回答 2

1

这有点讨厌,但您可以像这样访问它们:

window['point' + key]

由于这些是全局变量,它们实际上是窗口对象的属性,因此可以使用括号语法来引用它们。

虽然这等同于window.point5when key == 5,但请注意这window.point+key不起作用。

所以完整的解决方案将变为:

var takeurl = '/api/response.json?point='+ window['point' + key] + '&id=' + window['id' + key];
于 2013-03-23T01:53:21.537 回答
0

您的问题是您正在创建一个字符串point + key,其值point等于 的值加上 的值key。放你想要的就是值"point" plus key

所以你要做的是动态命名你分配给窗口对象的变量:

window[ "point" + key ]

这将(假设关键是3)评估window.point3您需要的。

于 2013-03-23T01:57:10.080 回答