Javascript:基于多个变量名编译字符串

Javascript:基于多个变量名编译字符串,javascript,Javascript,这应该是非常简单的,和往常一样,我可能忽略了一些东西,因为我的代码教学方法不够彻底。希望这是有意义的 在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;?> = <?ph

这应该是非常简单的,和往常一样,我可能忽略了一些东西,因为我的代码教学方法不够彻底。希望这是有意义的

在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']); ?>;
除了我希望“point”和“id”是“point2”或“point4”的值,或者简而言之,是point+key

如果我把它写成

var takeurl = '/api/response.json?point='+ point + key + '&id=' + id;
它返回“点”的值加上“键”的值,而不是点2或点3的值

然后我意识到,在一开始,当声明这些值时,我不应该一直使用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']); ?>;
var-key=;
变量id[键]=;
变量点{“键”}=;
然后使用相同的约定创建新变量。我读过类似的问题,其中的答案涉及使用数组,但同样,这都是在一个更大的php循环中,所以我认为这不适合这里的情况

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

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


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

这有点恶心,但你可以这样访问它们:

var takeurl = '/api/response.json?point='+ point + '&id=' + id;
window['point' + key]
由于这些是全局变量,它们实际上是窗口对象的属性,因此可以使用括号语法引用它们

虽然当
key==5
时,这相当于
window.point5
,但请注意
window.point+key
不起作用

因此,完整的解决方案将变成:

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

您的问题是您正在创建一个字符串
point+key
的计算结果是
point
的值加上
key
的值。输入您想要的是
“点”加上键的值

因此,您要做的是动态命名分配给窗口对象的变量:

window[ "point" + key ]

这将(假设关键是
3
)计算到
window.point3
,这是您所需要的。

您的问题是什么?只需json一次编码整个结构并在js中访问它,您所做的几乎就像手工编写json。您可以执行
var takeurl='/api/response.json?point='+point.toString()+key.toString()+'&id='+id
or
var takeurl='/api/response.json?point='+point+'+key+'&id='+id@
谢谢。不过,这不是在评估。它返回错误:ReferenceError:val未定义编辑听起来好像您在代码中的某个地方引用了一个名为“val”的变量,而该变量未定义……您可以创建一个与相关js行相关的fiddle吗?或者将它们包括在问题中。我相信我们可以这样解决。哦,你知道的。这是。。。奇怪的所以,你的答案是正确的。问题完全不同。它显然是在提取循环中出现的最后一个变量的值(好像我根本不是通过“键”区别来定义它们,而是定义“点”)五次。天哪,我担心我没有任何意义。这里有一些代码,你可以看到发生了什么:检查,因为最初的问题得到了回答。谢谢。谢谢…所以我创建了两个新变量:var newpoint=window[“point”+key];然后将takeurl修改为:var takeurl='/api/response.json?point='+newpoint+'&id='+id;现在我得到了一个“val未定义”错误。我更困惑了自己。。。