【问题标题】:How to concat a variable to the name of another with web languages如何使用 Web 语言将变量连接到另一个变量的名称
【发布时间】:2017-02-07 23:08:17
【问题描述】:

我缺乏这些语言的一些基础知识,所以这可能是一个简单的问题。

我从 ajax 调用收到一个 json 编码的对象数组。在开始时,我添加了一些我需要的元素:

array_unshift($data, array('nbr' => 6,'Col1' => 'Company name', 
'Col2' => 'Email','Col3' => 'Adress','Col4' => 'City',
'Col5' => 'Code','Col6' => 'Country));

在 ajax 的 success:function(msg) 中,我想遍历这些元素以使它们成为表的标题:

var qtt=msg[0].nbr;
$foo='<table>';
for (var i = 1; i<qtt; i++) {
    $foo=$foo+'<th>'+msg[i].Col+i+'</th>';
}
$foo=$foo+'</table>;

我想访问 msg 的第 i 个元素,我知道它被命名为 'Col'+i。对我来说,它看起来既简单又困难。

我只是不知道该怎么做,不知道。欢迎任何帮助。

编辑: 使用萤火虫,我可以检索 ajax 调用的答案。如果它可以帮助你,那就是(元素是法语,但这正是我之前所说的):

[{"nbr":6,"Col1":"Nom soci\u00e9t\u00e9","Col2":"Email","Col3":"Adresse",
"Col4":"Ville","Col5":"Code postal","Col6":"Pays"},
{"Soc_Nom":"foo1","Soc_Email":"bar1","Soc_Adresse":"foobar1", "Vil_Nom":
"Foofoo1","Vil_Code_Postal":"1000","Pys_Nom":"Belgique"},{"Soc_Nom":
"Foo2","Soc_Email":"Bar2","Soc_Adresse":"foobar2","Vil_Nom":"Foofoo2",
"Vil_Code_Postal":"2000","Pys_Nom":"Belgique"}]

答案: 无需遍历 msg[],因为我想要访问的所有信息都在 msg[0] 中。

使用 msg[0]['Col'+i] 效果很好。

【问题讨论】:

    标签: javascript jquery json ajax concatenation


    【解决方案1】:

    如果您尝试动态访问属性名称,您可以使用将属性名称作为字符串的索引器:

    $foo=$foo+'<th>'+msg[i].Col+i+'</th>';
    

    变成

    $foo=$foo+'<th>'+msg[i]['Col' + i]+'</th>';
    

    msg[i].Col + i(您的原始代码)正在寻找一个名为Col 的属性,并尝试将Col 的值添加到i 的值中。

    第二个示例是构建一个动态属性名称'Col' + i,并使用方括号访问msg[i] 对象上该名称的属性。

    https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Property_Accessors

    【讨论】:

    • 我没有收到任何错误,而是返回未定义的公司名称、电子邮件或其他任何内容。我花了一些时间来回答,因为我试图解决这个问题,但我找不到这个问题的根源。有什么想法吗?
    • 添加:我用两个 $.each 和一个 alert() 检查了 msg 是否包含正确的数据。那边没有错。
    • @AlexandreRivara 你能在循环中提供对象结构吗?例如,设置一个断点,然后打开控制台窗口(Windows 上的 Chrome 中的 F12),然后输入 msg[i]。这应该向您显示对象结构并允许您展开或折叠属性。
    • 对不起,我尝试了,但包含循环的文件未列在调试器可用的源文件中。我没有时间学习如何使用 firefox 的开发者界面,所以调试器对我来说仍然是一种奢侈。
    • 我在回答时发现了问题!你的回答很有用,谢谢。我试图用 i 从 1 开始到达 msg[i]。但是查看 msg 的结构,我意识到我添加的所有信息都在 msg[0] 中,无需迭代该部分!这解决了一切。非常感谢。
    猜你喜欢
    • 2015-12-16
    • 1970-01-01
    • 2021-12-24
    • 1970-01-01
    • 1970-01-01
    • 2021-08-22
    • 1970-01-01
    • 2011-07-23
    • 2017-08-22
    相关资源
    最近更新 更多