Javascript 为什么不';是否使用每个()创建多个标记?
假设我有一些数据看起来像这样Javascript 为什么不';是否使用每个()创建多个标记?,javascript,jquery,html,Javascript,Jquery,Html,假设我有一些数据看起来像这样 <data> <location> <type>main</type> </location> <location> <type>mailing</type> </location> </data> $('location',data).each(function(){
<data>
<location>
<type>main</type>
</location>
<location>
<type>mailing</type>
</location>
</data>
$('location',data).each(function(){
var x='<table><tr><td>Type:</td><td>'+$(data).find('type').text()+'</td></tr></table>';
$('#output').html(x);
});
主要的
邮寄
然后一些代码看起来像这样
<data>
<location>
<type>main</type>
</location>
<location>
<type>mailing</type>
</location>
</data>
$('location',data).each(function(){
var x='<table><tr><td>Type:</td><td>'+$(data).find('type').text()+'</td></tr></table>';
$('#output').html(x);
});
$('location',data)。每个(函数(){
var x='Type:'+$(数据).find('Type').text();
$('#output').html(x);
});
我运行这个程序的结果是
类型:mainmailing
我不明白为什么它不执行以下操作,因为对于每个location元素,它应该再次运行代码,对吗
类型:主要
类型:mailing,因为您一直在覆盖上一个值
.html()
不会附加到其中的内容,而是覆盖它
奇怪的是,你正在创建spearte表,而不仅仅是行,而是基本的想法
var x='<table><tr><td>Type:</td><td>'+$(this).find('type').text()+'</td></tr></table>';
$('#output').append(x);
var x='Type:'+$(this.find('Type').text();
$('#output')。追加(x);
我期待着更像
var table = "<table><tbody>";
$(data).find('location').each(function(){
table += "<tr><th>Type:</th><td>'+$(this).find('type').text()+'</td></tr>';
});
table += "</tbody></table>";
$('#output').html(table);
var表=”;
$(数据)。查找('location')。每个(函数(){
表+=“类型:'+$(this).find('Type').text()+';
});
表+=”;
$('#output').html(表格);
因为您一直在覆盖上一个值
.html()
不会附加到其中的内容,而是覆盖它
奇怪的是,你正在创建spearte表,而不仅仅是行,而是基本的想法
var x='<table><tr><td>Type:</td><td>'+$(this).find('type').text()+'</td></tr></table>';
$('#output').append(x);
var x='Type:'+$(this.find('Type').text();
$('#output')。追加(x);
我期待着更像
var table = "<table><tbody>";
$(data).find('location').each(function(){
table += "<tr><th>Type:</th><td>'+$(this).find('type').text()+'</td></tr>';
});
table += "</tbody></table>";
$('#output').html(table);
var表=”;
$(数据)。查找('location')。每个(函数(){
表+=“类型:'+$(this).find('Type').text()+';
});
表+=”;
$('#output').html(表格);
您似乎得到了类型:mainmailing
因为您似乎在整个数据中找到它,而不是在当前位置标记中
$(data).find('type').text()
应该是
$(this).find('type').text();
此外,您还可以保持覆盖每个循环迭代中的值。
将附加移动到循环的外部
var x = '<table>'
$('location','data').each(function(){
x +='<tr><td>Type:</td><td>'+$(this).find('type').text()+'</td></tr>';
});
x += '</table>'
$('#output').html(x);
var x=''
$('location','data')。每个(函数(){
x++='Type:'+$(this.find('Type').text()+'';
});
x+=''
$('#output').html(x);
您似乎收到了
类型:mainmailing
因为您似乎在整个数据中找到它,而不是在当前位置标记中
$(data).find('type').text()
应该是
$(this).find('type').text();
此外,您还可以保持覆盖每个循环迭代中的值。
将附加移动到循环的外部
var x = '<table>'
$('location','data').each(function(){
x +='<tr><td>Type:</td><td>'+$(this).find('type').text()+'</td></tr>';
});
x += '</table>'
$('#output').html(x);
var x=''
$('location','data')。每个(函数(){
x++='Type:'+$(this.find('Type').text()+'';
});
x+=''
$('#output').html(x);
您应该使用
append()
而不是html()
,并且您应该使用当前在each()中处理的项目
var data=“mainmailing”;
$(“位置”,数据)。每个(功能(索引,项){
var x='Type:'+$(item.find('Type').text()+'';
$('#output')。追加(x);
});
这是一个有效的方法。您应该使用append()
而不是html()
,并且应该使用当前在each()中处理的项目。
var data=“mainmailing”;
$(“位置”,数据)。每个(功能(索引,项){
var x='Type:'+$(item.find('Type').text()+'';
$('#output')。追加(x);
});
这是一个可行的方法。但它将两个数据值结合起来,而不是替换它们?我有点困惑。另外,您可以使用.append()除了IIRC.html()
使用.innerHTML
,即使它可以工作,也不应该使用。@barit它将它们组合在一起,因为您在每个循环中没有使用$(此)
,您使用$(数据)
引用了所有类型元素,非常感谢您的帮助,多亏了你和@sushanthb,我才能够让它正常工作,但它将两个数据值结合起来,而不是替换它们?我有点困惑。另外,您可以使用.append()除了IIRC.html()
使用.innerHTML
,即使它可以工作,也不应该使用。@barit它将它们组合在一起,因为您在每个循环中没有使用$(此)
,您使用$(数据)
引用了所有类型元素,非常感谢您的帮助,感谢您和@sushanthuse.append()而不是.html()使用.append()而不是.html()非常感谢您的帮助,我能够得到它working@barit.. 很高兴能帮助你:)非常感谢你的帮助,我能得到它working@barit.. 很高兴帮助你:)