循环元素's在DOM中的ID
Looping through element's ids in the DOM
我的html中有几个带有id的div元素。
这是我的js:
var frameList = $('div');
for(i = 0; i < frameList.length; i++) {
console.log(frameList[i].attr('id'));
};
也就是说,我正在获取元素列表,然后在每个元素上循环并尝试获取其id。这不起作用,我理解原因。我该怎么做?
通常,与jQuery选择器匹配的元素集合使用每个元素进行迭代,其中this
在迭代期间绑定到匹配集的当前元素
$('div').each(function(){
console.log(this.id);
});
不过,以你的具体例子。。。
这里的问题是,当您使用数组索引访问frameList
时,您正在访问jQuery创建的psuedo数组。这个底层数组只保存与选择器匹配或包含在jQuery对象中的元素集。
这些元素仅公开本机API。这里的一个选项是访问这些元素的本机id。
console.log(frameList[i].id);
另一种选择是使用jQuery函数eq
获取该元素的jQuery对象,然后使用attr
console.log(frameList.eq(i).attr('id'));
现在您正在使用jQuery,您应该使用jQuery.each:
$('div').each(function() {
console.log(this.id);
});
frameList[i]
不是jQuery对象,因此未定义.attr()
。
frameList[i].id
或frameList.eq(i).attr("id")
都应该工作:
var frameList = $('div');
for(i = 0; i < frameList.length; i++) {
console.log(frameList[i].id);
console.log(frameList.eq(i).attr("id"));
};
<script src="http://gh-canon.github.io/stack-snippet-console/console.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="one"></div>
<div id="two"></div>
<div id="three"></div>
<div id="four"></div>
相关文章:
- 是否有任何snippet或jQuery插件可以列出easylist.txt模式匹配的DOM中的所有元素
- 在不使用JQuery的情况下隐藏DOM中的选定元素
- IE 9压缩XML DOM中的空白空间
- 未捕获错误:元素缓存中id为x的DOM元素与DOM中的元素不同
- 如何在删除脚本后刷新/重新编译dom中的脚本
- JQuery选择shadow DOM中的元素
- 迭代 DOM 中的属性
- 使用DOM中的信息创建一个控制器/服务来持久化数据
- findout js代码遍历DOM中的哪个元素
- 禁用Javascript事件DOM中的Function
- 哪些对象可以触发DOM中的按键事件
- 移动项在DOM中的位置
- 为插入到Shadow DOM中的内容设置样式
- 将元素添加到DOM中的深层元素中
- 如何在页面加载时替换不在 DOM 中的文本
- jQuery:在具有相同类的对象列表中获取 DOM 中的对象编号
- 我可以链接到 dom 中的元素吗?
- 当我尝试两个 DOM 中的 get 元素时,HTML 和 Xpath 结果未定义
- 更新 DOM 中的标签
- 操作“虚构”元素的速度是否比当前在 DOM 中的元素快