Javascript 为什么这些循环不同?
我在工作时在我的网站上工作,当我遇到一些奇怪的事情时,我通过ajax从数据库中获取数据,然后使用一些循环来更新表中的数据。这是我第一次尝试循环Javascript 为什么这些循环不同?,javascript,Javascript,我在工作时在我的网站上工作,当我遇到一些奇怪的事情时,我通过ajax从数据库中获取数据,然后使用一些循环来更新表中的数据。这是我第一次尝试循环 for(var id in data){ for(var key in data[id]) for(var e in document.getElementsByName(key+id)) e.innerHTML = data[id][key] !== null ? data[id][key] : "";
for(var id in data){
for(var key in data[id])
for(var e in document.getElementsByName(key+id))
e.innerHTML = data[id][key] !== null ? data[id][key] : "";
我原以为这样做不会有问题,但事实并非如此。表中的字段都没有更新,我也不知道为什么。然后我决定用一些更传统的东西来测试,结果是这个
for(var id in data){
for(var key in data[id]){
var temp = document.getElementsByName(key+id);
for(var i=0; i<temp.length; i++)
temp[i].innerHTML = data[id][key] !== null ? data[id][key] : "";
}
for(数据中的变量id){
用于(var键入数据[id]){
var temp=document.getElementsByName(key+id);
for(var i=0;idocument.getElementsByName(key+id)
返回一个数组。for(var x in y)
的语法迭代对象/数组中的名称。对象中的名称是键,数组中的名称是索引
因此,在上一个循环中,
e
将是0,1,2,3,长度,…。在第一个示例中,您犯了两个错误
e
不是元素,而是索引。这不是它不起作用的原因在第一次尝试中,
var e
是文档的索引。getElementsByName(key+id)
试一试
出现错误消息了吗?我需要数据数组中的“键”,以便在从2D php数组中获取元素名称后能够重新构造元素名称。而
for…in
是我唯一能找到的them@Yemto:我看到你把PHP和JavaScript术语混淆了。PHP中的关联数组在JavaScript中称为对象({}
)。在JavaScript中引用数组时,通常指的是索引数组(['a','b','c']
)。对于数组
(在您的例子中,它类似于数组
),请使用for(…){
。对于真正的数组,你可以使用forEach
@Qantas94Heavy我知道,我自学了这两种语言,而且不知道所有的术语。我所知道的是,我传递了一个2D数组,其中使用json和ajax称为javascript的键。最好使用elem.innerHTML=data[id][key]| |“”;
为(元素中的var e).console.log您的e
,您也会找到属性。我知道,但他想使用for(数组中的var x)方法
for(var id in data){
for(var key in data[id]){
var elements = document.getElementsByName(key+id);
for(var e in elements)
var elem = elements[e];
elem.innerHTML = data[id][key] !== null ? data[id][key] : "";
}