遍历javascript中的多维元素
我试图通过HTML循环获取内容并将其放入JSON文件中 我有这个HTML:遍历javascript中的多维元素,javascript,html,Javascript,Html,我试图通过HTML循环获取内容并将其放入JSON文件中 我有这个HTML: <div class="main"> <div class="results"> <div class="name">joan</div> <div class="age">32</div> </div> <div class="results"> <div class="name
<div class="main">
<div class="results">
<div class="name">joan</div>
<div class="age">32</div>
</div>
<div class="results">
<div class="name">Sam</div>
<div class="age">35</div>
</div>
<div class="results">
<div class="name">joo</div>
<div class="age">32</div>
</div>
</div>
我尝试使用此JavaScript结构使其工作,但不起作用:
Array.from(document.getElementsByClassName("results")).forEach(
function(element, index, array) {
var data = $('.name, .age').text();
console.log(data);
});
有什么想法吗?没有jQuery,只有简单的javascript,而且速度非常快,你可以做这么简单的事情 对初始对象的键使用
索引
,然后创建另一个具有名称
/年龄
的键,并将其指定为其值
注意,由于较新的浏览器现在支持nodeList
上的forEach
,我同意了这一点,尽管为较旧的浏览器添加了第二个for…loop
,这可能会更快:)
堆栈片段
var data={};
document.queryselectoral(“.results”).forEach(函数(el,idx){
数据[idx+1]={
“名称”:el.children[0].textContent,
“年龄”:el.children[1]。文本内容
};
});
控制台日志(数据)代码>
琼
32
山姆
35
乔
32
以下是三种解决方案,可通过以下方式达到预期效果:
- jQuery
- ECMAScript 6
- 普通JavaScript
以及将数据结构更改为数组的建议,这将使以后更易于使用
jQuery解决方案
您可以用所需内容填充新对象res
使用jQuery方法在.results
元素之间循环:
.each(函数)
函数
:函数(整数索引
,元素元素
)
为每个匹配元素执行的函数
然后获取.results
的子项:.name
和.age
的文本内容
let res={};
$(“.results”)。每个(函数(索引,元素){
常量[name,age]=[$(this).children('.name').text(),$(this.children('.age').text());
res[index]={name,age}
});
console.log(res)
。作为控制台包装{最大高度:100%!重要;顶部:0;}
琼
32
山姆
35
乔
32
这是我的解决方案,用纯javascript试试
var数据=[]//声明一个obj容器
var objresults=document.getElementsByClassName(“结果”)//获取结果的类元素
for(设i=0;i
琼
32
山姆
35
乔
32
虽然此代码片段可能是解决方案,但它确实有助于提高文章的质量。请记住,您将在将来回答读者的问题,而这些人可能不知道您的代码建议的原因。我刚刚开始回答这里的问题,我只关注解决方案,没有考虑读者的观点。我会确保,我会在我的回答中包括一个解释,我感谢你的反馈,这是一个伟大的分享@Ivan!毫无疑问,这是最好的!我很高兴能帮上忙;)您的第三个解决方案非常有效,但当我尝试使用.getAttribute
获取图像源代码时,得到的输出值为空。有什么想法吗?@Gad是普通的JavaScript吗?您在哪里使用img
元素?我想你还有第三个孩子在里面,是吗?如果你使用的是数组。从开始,你最好使用map
,而不是手动构建数组。@Aankhen刚刚决定使用w/o,因为现在所有最新的浏览器都支持节点列表上的forEach
,这很酷。我今天学到了一些新东西!不过,您可能想添加一个关于兼容性的注释。@Aankhen刚刚添加了……也许这一新的酷学足以让您投票支持;)伟大的好了。非常感谢你的贡献,我真的很感激。很抱歉没有给你投票,我现在给你投票了,谢谢。听起来很好,谢谢
Array.from(document.getElementsByClassName("results")).forEach(
function(element, index, array) {
var data = $('.name, .age').text();
console.log(data);
});
var array = [];
$('.results').each(function(index, value) {
array.push({
"name": value.children[0].innerText,
"age": value.children[1].innerText
});
});
// the required result
var finalObject = JSON.stringify(array);