在 Google Chrome 的开发者工具中,当我选择一个元素时,我会在所选元素旁边看到 ==$0
。这意味着什么?
https://i.stack.imgur.com/C2eGI.jpg
$0
看看会发生什么;)
它是最后选择的 DOM 节点索引。 Chrome 会为您选择的每个 DOM 节点分配一个索引。因此 $0
将始终指向您选择的最后一个节点,而 $1
将指向您之前选择的节点。把它想象成一堆最近选择的节点。
例如,考虑以下
<div id="sunday"></div>
<div id="monday"></div>
<div id="tuesday"></div>
现在您打开了 devtools 控制台并按上述顺序选择了 #sunday
、#monday
和 #tuesday
,您将获得如下 id:
$0 -> <div id="tuesday"></div>
$1 -> <div id="monday"></div>
$2 -> <div id="sunday"></div>
注意:知道节点在您的脚本(或控制台)中是可选的可能很有用,例如,一个流行的用途是角度元素选择器,因此您可以简单地选择您的节点,然后运行:
angular.element($0).scope()
瞧,您可以通过控制台访问节点范围。
这里的其他答案清楚地解释了它的含义。我喜欢解释它的用途。
您可以在 elements
标签中选择一个元素并切换到 Chrome 中的 console
标签。只需输入 $0 or $1
或任何数字并按 Enter 键,该元素就会显示在控制台中供您使用。
https://i.stack.imgur.com/4Sk86.png
这是 Chrome 的提示,告诉您如果您在控制台上键入 $0,它将等同于该特定元素。
在内部,Chrome 维护一个堆栈,其中 $0
是被选中的元素,$1
是最后被选中的元素,$2
是在 $1
之前被选中的元素,依此类推。
以下是它的一些应用:
从控制台访问 DOM 元素:$0
从控制台访问他们的祖先:$0.parentElement
从控制台更新它们的属性:$1.classList.add(...)
从控制台添加/更新元素的样式:$0.style.backgroundColor="aqua"
从控制台触发 JS 事件:$0.click()
并做很多更复杂的事情,比如: $0.appendChild(document.createElement("div"))
观看所有这些操作:
https://i.stack.imgur.com/fz9LW.gif
支持声明:
是的,我同意有更好的方法来执行这些操作,但是这个功能可以在某些复杂的场景中派上用场,例如当需要单击 DOM 元素但无法从 UI 中这样做时,因为它被其他元素,或者由于某种原因,此时在 UI 上不可见。
我会说这只是在调试时获取 html 元素引用的简写语法,通常这类任务将由这些方法执行
document.getElementById , document.getElementsByClassName , document.querySelector
因此,单击 html 元素并在控制台中获取引用变量 ($0) 可以在白天节省大量时间
== $0
有什么好处呢?任何知道$0
的人都已经知道它是哪个元素,而对于不知道的人来说它毫无意义。setTimeout(() => console.log($0), 0); // $0 is not defined
示例:![Chrome console](i.stack.imgur.com/gOYfm.png)