尝试使用 chrome 控制台 javascript/jquery 获取内部元素
Trying to get Inner Elements using chrome console javascript/jquery
您好,我正在尝试使用 chrome 控制台获取内部元素,但它抛出了一个错误,这是我的代码片段。任何解决方法都将真正帮助我获取元素并使其自动化。我附上了一个普通网站的截图
当我这样做时,我得到了 class 元素列表(i.e.swatches-wrap)作为数组。
$$(`.swatches-wrap`);
当我尝试这个时它抛出一个错误 Uncaught TypeError: $$(...)[0].$ is not a function
$$(`.swatches-wrap`)[0].$(`.title`);
附上截图
$(".swatches-wrap")[0].querySelector(".info")
returns 第一个找到的元素
returns null
如果没有找到
你也可以链接它,除非它是 null
:
$(".swatches-wrap")[0].querySelector(".info").querySelector(".something")
也许你可以试试
$($(".swatches-wrap")[0]).children(".title")
不同之处(以堆栈页面为例):
如果你用这个↓,会得到一个DOM.
$(".li")[0]
如果你用这个↓,会得到一个Object。
$(".-img _glyph")
$
和 $$
是 chrome (https://developers.google.com/web/tools/chrome-devtools/console/utilities)
提供的开发工具 api 的一部分
$
是 document.querySelector
的快捷方式, returns 是匹配查询的第一个元素。默认情况下,它从根元素 (body
) 开始,并且可以通过提供第二个参数来覆盖根元素。
$$
是 [...document.querySelectorAll('some query')]
和 returns 匹配查询的元素数组的快捷方式。默认情况下,它从根元素 (body
) 开始,并且可以通过提供第二个参数来覆盖根元素。
对于您的示例,这应该是一种更好的方法,同时还可以作为如何使用 root 参数的示例:
$('.title',$('.swatches-wrap'))
由于 CSS 选择器的工作方式,执行您的示例的最有效方法是
$('.swatches-wrap .title')
如果您要在 .swatches-wrap
个元素中查找多个 .title
标签:
$$('.swatches-wrap .title').forEach( elem => {
console.log('found another `.swatches-wrap .title` ', element)
})
重要的是要记住这些是实用函数,它们只存在于 chrome 控制台中。如果你想在你的代码中使用它,你应该使用下面的例子:
document.querySelector('.swatches-wrap .title')
// or for multiple results
[...document.querySelectorAll('.swatches-wrap .title')].forEach( elem => {
console.log('found another `.swartches-wrap .title` ', element)
})
document.querySelectorAll
returns 一个类数组对象,可以通过扩展成一个新数组来转换成一个数组。这就是 [...<expression>]
所做的
最后,如果您想在代码中获得相同的 $
和 $$
实用程序,则不必使用 jQuery,您可以将其放入您的代码中编码并使用 $
和 $$
就像我们在上面的例子中所做的那样:
// $ polyfill
const $ = document.querySelector.bind(document)
// $$ polyfill
const $$ = (selector, root)=>[...document.querySelectorAll(selector,root)]
您好,我正在尝试使用 chrome 控制台获取内部元素,但它抛出了一个错误,这是我的代码片段。任何解决方法都将真正帮助我获取元素并使其自动化。我附上了一个普通网站的截图
当我这样做时,我得到了 class 元素列表(i.e.swatches-wrap)作为数组。
$$(`.swatches-wrap`);
当我尝试这个时它抛出一个错误 Uncaught TypeError: $$(...)[0].$ is not a function
$$(`.swatches-wrap`)[0].$(`.title`);
附上截图
$(".swatches-wrap")[0].querySelector(".info")
returns 第一个找到的元素
returns
null
如果没有找到
你也可以链接它,除非它是 null
:
$(".swatches-wrap")[0].querySelector(".info").querySelector(".something")
也许你可以试试
$($(".swatches-wrap")[0]).children(".title")
不同之处(以堆栈页面为例):
如果你用这个↓,会得到一个DOM.
$(".li")[0]
如果你用这个↓,会得到一个Object。
$(".-img _glyph")
$
和 $$
是 chrome (https://developers.google.com/web/tools/chrome-devtools/console/utilities)
$
是 document.querySelector
的快捷方式, returns 是匹配查询的第一个元素。默认情况下,它从根元素 (body
) 开始,并且可以通过提供第二个参数来覆盖根元素。
$$
是 [...document.querySelectorAll('some query')]
和 returns 匹配查询的元素数组的快捷方式。默认情况下,它从根元素 (body
) 开始,并且可以通过提供第二个参数来覆盖根元素。
对于您的示例,这应该是一种更好的方法,同时还可以作为如何使用 root 参数的示例:
$('.title',$('.swatches-wrap'))
由于 CSS 选择器的工作方式,执行您的示例的最有效方法是
$('.swatches-wrap .title')
如果您要在 .swatches-wrap
个元素中查找多个 .title
标签:
$$('.swatches-wrap .title').forEach( elem => {
console.log('found another `.swatches-wrap .title` ', element)
})
重要的是要记住这些是实用函数,它们只存在于 chrome 控制台中。如果你想在你的代码中使用它,你应该使用下面的例子:
document.querySelector('.swatches-wrap .title')
// or for multiple results
[...document.querySelectorAll('.swatches-wrap .title')].forEach( elem => {
console.log('found another `.swartches-wrap .title` ', element)
})
document.querySelectorAll
returns 一个类数组对象,可以通过扩展成一个新数组来转换成一个数组。这就是 [...<expression>]
所做的
最后,如果您想在代码中获得相同的 $
和 $$
实用程序,则不必使用 jQuery,您可以将其放入您的代码中编码并使用 $
和 $$
就像我们在上面的例子中所做的那样:
// $ polyfill
const $ = document.querySelector.bind(document)
// $$ polyfill
const $$ = (selector, root)=>[...document.querySelectorAll(selector,root)]