我正在尝试编辑元素的输入值。我 100% 确定它已加载到 DOM 中。但是,当我在控制台中弄乱它时,在我检查它之前它找不到该元素。通过 token 名称属性,发生了一些事情。但是因为 inspect 似乎将它“转换”为能够被发现,所以肯定有一种方法可以自动完成吗?
有问题的代码:https://jsfiddle.net/h8oyLdv4/1/
如果我在控制台中输入 $('input'),它会返回 null。如果我检查任何表格,它会返回
<input class="FORMshrt2" name="fd_co_firstname" type="text" maxlength="100" value="">
此外,document.querySelector('input') 返回
<input type="hidden" name="csrfmiddlewaretoken" value="XXbWi2ygjOsJ8igaEa9MvFb5Nm7xznOD">
但是一旦我检查了元素,它就会返回
<input class="FORMshrt2" name="fd_co_firstname" type="text" maxlength="100" value="">
最佳答案
从 csrfmiddlewaretoken
来看,您显然是在 jsFiddle 上执行此操作。
问题是控制台开始附加到主窗口,其中 $
是一个函数,它是 getElementById
的快捷方式(覆盖 Chrome 控制台的内置 $
,这是querySelectorAll
的快捷方式)。由于不存在具有 id
input
的元素,因此 $('input')
返回 null
。由于 jsFiddle 主窗口上的第一个 input
是 csrfmiddlewaretoken
输入,querySelector
会找到那个 input
。
但是,如果您右键单击并检查结果框架中的一个元素,控制台就会连接到该框架,其中包含您的 input
元素和您的脚本等,所以(取决于脚本中的内容) $
是 Chrome 控制台的默认 $
或 jQuery 或您加载的任何其他内容,并且因为您的内容在那里,所以您可以在使用时找到它$
或 querySelector
。
关于Javascript + Chrome,控制台在我检查之前找不到元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44018019/