JavaScript-如何从节点列表中选择元素
这是我的HTML:JavaScript-如何从节点列表中选择元素,javascript,custom-data-attribute,Javascript,Custom Data Attribute,这是我的HTML: <button class="btn" data-key="123456789">Show</button> <button class="btn" data-key="abcdefghi">Show</button> 这将返回带有iframe和按钮的节点列表。在keyelms中,我希望能够获得iframe元素。为什么我不能这样做 var frame = keys.getElementsByTagName('iframe');
<button class="btn" data-key="123456789">Show</button>
<button class="btn" data-key="abcdefghi">Show</button>
这将返回带有iframe和按钮的节点列表。在keyelms
中,我希望能够获得iframe元素。为什么我不能这样做
var frame = keys.getElementsByTagName('iframe');
我认为这似乎不起作用,因为keys是节点列表。除了循环并检查元素是否为iframe之外,还有更优雅的方法吗?您只需修改选择器以选择
iframe
var keyElems = document.querySelectorAll('iframe[data-key="' + key + '"]');
如果只希望返回一个iframe,请改用
querySelector
。它从节点列表返回第一个元素
您只需修改选择器以选择iframe
var keyElems = document.querySelectorAll('iframe[data-key="' + key + '"]');
如果只希望返回一个iframe,请改用
querySelector
。它从节点列表
文档返回第一个元素。querySelectorAll
返回节点列表,而不是单个HTML元素,因此它没有方法querySelectorAll
。换句话说,您不能链接querySelectorAll
方法调用
但这样你就没有必要了;只需修改选择器:
document.querySelectorAll('iframe[data-key="'+key+'"]');
对于更复杂的目的,如果需要更多的计算,并且仅仅扩展选择器不是一个选项,您可以利用array.prototype.filter
[].filter.call(document.querySelectorAll('[data-key="'+key+'"]'), function(el) {
return el.tagName == 'iframe';
});
document.querySelectorAll
返回一个节点列表,而不是一个HTML元素,因此它没有方法querySelectorAll
。换句话说,您不能链接querySelectorAll
方法调用
但这样你就没有必要了;只需修改选择器:
document.querySelectorAll('iframe[data-key="'+key+'"]');
对于更复杂的目的,如果需要更多的计算,并且仅仅扩展选择器不是一个选项,您可以利用array.prototype.filter
[].filter.call(document.querySelectorAll('[data-key="'+key+'"]'), function(el) {
return el.tagName == 'iframe';
});
为什么要在3分钟后发布相同的答案?我在看到鲁乔丹的答案之前就开始写了,你觉得不可思议吗?他正确地获得了最初的选票。我试图通过添加更多信息来区分我的答案。为什么在3分钟后发布相同的答案?我在看到RUJordan的答案之前就开始写了,你觉得不可思议吗?他正确地获得了最初的选票。我试图通过添加更多的信息来区分我的答案。很好,这是我一直在寻找的语法缺失部分。谢谢很高兴我能帮忙。:)太好了,这就是我一直在寻找的语法缺失部分。谢谢很高兴我能帮忙。:)这通常表明存在更深层次的设计问题。考虑使用数组或对象来表示应用程序数据,您所做的是有效地查询应用程序的表示层,以获得其状态。这通常表示一个更深层次的设计问题。考虑使用数组或对象来表示应用程序数据,您所做的是有效地查询应用程序的呈现层,以便获得其状态。