给定html
<div></div>
<div></div>
调用文档。querySelector(“div”)
返回第一个div
元素,其中。长度
不是返回值的属性。
调用document.querySseltorAll()
返回一个具有. long
属性的NodeList
。
的两个返回值之间的差异。querySelector()
和。querySelectorAll()
是前者不是iterable;当试图使用扩展元素
将元素扩展到数组中时,将抛出错误。
在下面的示例中,考虑div
或div
是在函数调用的主体中接收的参数。因此,就收集而言,不可能确定变量是否被定义为Element.query选择器()
,Element.query选择器所有()
,document.query#############################################################################################################################################################
var div = document.querySelector("div");
for (let el of div) {
console.log(".querySelector():", el)
}
<div></div>
<div></div>
日志
Uncaught TypeError: div[Symbol.iterator] is not a function
虽然
var div = document.querySelectorAll("div");
for (let el of div) {
console.log(".querySelectorAll():", el)
}
<div></div>
<div></div>
返回预期结果;即,
文档。querySelectorAll(“div”)
被扩展以填充可编辑数组。
我们可以通过将div设置为数组的元素来获得预期的结果。
[div]
位于..的
。。属于
iterable
参数。
最接近使用相同的模式,或者
和. querySseltor()
或. querySseltorAll()
使用的回调
rray.from(). tagName
变量,和扩展名元素
。虽然这省略了其他可能用. querySelector()
调用的选择器,例如. querySelector("div.abc")
。
var div = document.querySelector("div");
var divs = document.querySelectorAll("div");
var elems = Array.from({length:div.length || 1}, function(_, i) {
return [...div.parentElement.querySelectorAll(
(div.tagName || div[0].tagName))
][i]
});
for (let el of elems) {
console.log(".querySelector():", el)
}
elems = Array.from({length:divs.length || 1}, function(_, i) {
return [...divs[0].parentElement.querySelectorAll(
(divs.tagName || divs[0].tagName))
][i]
});
for (let el of elems) {
console.log("querySelectorAll:", el)
}
<div></div>
<div></div>
由于其他原因,这不能提供足够的准确性<代码>元素。querySelector()原本可以传递给函数,而不是文档。querySelector()
,与类似。querySelectorAll()。不确定是否可以检索传递给
的确切选择器。querySelector,全部`而不修改本机函数?
所需的模式将接受该变量,如果,则将iterable的内容扩展到一个数组中。使用querySelectorAll()
;这将处理。getElementsByTagName()
,。GetElementsByCassName()
,。getElementsByTagName()
,。getElementsByName()
相同;或者设置返回的单个值。querySelector()
作为数组的元素。
注意,当前的工作解决方案是
div.length ? div : [div]
它迭代div
,如果div
有一个。长度
属性,可能是一个可迭代的,尽管只是有一个。长度
属性,而不是一个可迭代的
;否则将div
设置为数组的单个元素,可迭代。
var div = document.querySelector("div");
var divs = document.querySelectorAll("div");
var elems = div.length ? div : [div];
for (let el of elems) {
console.log(".querySelector():", el)
}
var elems = divs.length ? divs : [divs];
for (let el of elems) {
console.log("querySelectorAll:", el)
}
<div></div>
<div></div>
这能实现吗
. long
?工作解决方案的方法是否可行
div
的[Symbol.iterator]
而不是。
- 是否有使用
的魔法。传播元素
或rest元素
,这可能允许省略检查对象的。长度
? - 会使用
Generator
,Array.prototype.reduce()
或其他方法来改变之前检查变量的属性的需要吗?将元素扩展为数组?
或者,鉴于对象之间的区别,上面的方法是最简单的吗?
我或多或少会做Array。from
执行,但检查长度的类型,而不是始终转换它:
const itemsOrSingle = items => {
const iteratorFn = items[Symbol.iterator]
if (iteratorFn) {
return Array.from(iteratorFn.call(items))
}
const length = items.length
if (typeof length !== 'number') {
return [items]
}
const result = []
for (let i = 0; i < length; i++) {
result.push(items[i])
}
return result
}
下面是我的代码。当我从excel中输入url时,大部分时间都显示org . open QA . selenium . elementnotvisibleexception:元素当前不可见错误。对于像www.travelocity.com这样的网站,它显示点击7 8链接后,但www.google.com显示错误从开始。 线程"main"org.openqa.selenium.ElementNotVi
主要内容:JavaTuples 元组检查元素的方法,JavaTuples 元组检查元素的示例JavaTuples 元组检查元素的方法 每个元组都提供实用方法来以与集合类似的方式检查其元素。 contains(element) : 检查元素是否存在。 containsAll(collection) : 检查元素是否存在。 indexOf(element) : 如果存在,则返回第一个元素的索引,否则返回 -1。 lastIndexOf(element) : 如果存在,则返回最后一个元素的索引
我有一个xml。我想要元素
当用触发时,事件错误表示元素不可见
问题内容: 我有一个多维数组,我想获取围绕该数组中特定元素的元素。 例如,如果我有以下内容: 如何找到以上任何一个元素中的所有8个元素?以及如何处理边缘的元素? 我发现的一种方法是为此编写9行代码,这很明显,但是有更好的解决方案吗? 问题答案: for (i = 0; i < array.length; i ) { for (j = 0; j < array[i].length; j ) { fo