- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
为什么当我运行时:
document.getElementsByTagName('p')[0].innerText;
从控制台返回第一个 p 元素的内部文本(正确地作为 p 元素的内部文本),但是当我通过浏览器中的脚本文件运行它时,控制台将其记录为“未定义”?
这是我从内部 .js 文件运行的代码:
console.log('test', document.getElementsByTagName('p').innerText);
这是控制台输出:测试未定义
最佳答案
.getElementsByTagName()
返回节点列表。以下内容:
document.getElementsByTagName('p').innerText
尝试获取该节点列表的.innerText
,但节点列表没有.innerText
,只有单个节点有。您必须访问列表中的节点之一,然后才能获取其 .innerText
,如下所示:
document.getElementsByTagName('p')[0].innerText
<小时/>
此外,当您打开控制台并在其中输入内容时,文档已被完全解析。您进行相同的测试,但在解析 p
元素之前尝试使用文件中的代码。
确保您的 script
标记位于文档中结束 body
标记之前,以便在遇到它时,所有 HTML 都将被解析为内存。
示例:
<!doctype html>
<html>
<head>
<title>Attempting to get DOM references too early</title>
<script>
// This will fail because, at this point, the <p> hasn't been parsed yet
console.log(document.querySelector("p").textContent);
</script>
</head>
<body>
<p>Test</p>
</body>
</html>
<!doctype html>
<html>
<head>
<title>Getting DOM references after the DOM is ready</title>
</head>
<body>
<p>Test</p>
<script>
// This will work because, at this point, the <p> has been parsed
console.log(document.querySelector("p").textContent);
</script>
</body>
</html>
仅供引用:
.getElementsByTagName()
返回一个“事件”节点列表,该列表可能会影响页面性能,因为每次变量访问时,必须再次搜索整个文档以确保您拥有最新的收藏。这在很多情况下是不合适的用例(特别是如果您的文档不是动态的添加/删除元素)。所以,大多数情况下,使用<强> .querySelectorAll()
相反,因为此方法返回一个“静态”节点列表。.innerText
是一个“事实上的”标准,但它的工作方式与.textContent
,这是一个实际的标准。使用.textContent
相反。关于javascript - 当从控制台与脚本文件运行 document.getElementsByTagName 时,为什么我会得到相互冲突的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50845691/
亲爱的专家们,我对 javascript 还很陌生,我经常看到编码人员互换使用这些行。 document.body.getElementsByTagName(); 和 document.getElem
是否有代码可以使用javascript获取其他网站的元数据信息,例如标题、关键字?document.getElementById 将帮助获取当前文档的信息。同样是否有代码可以获取当前文档以外的信息。
问题是创建一个函数 showLink(),它有一个变量 sIndx,该变量指向当前选择列表中所选选项的索引。 Select a Web siteThe White House
首先声明我不是 JavaScript 开发人员,所以这个问题可能相当基础。 模拟IE的非标准时all我正在使用 getElementsByTagName("*") 属性,这两种方法之间是否存在显着的性
我正在开发一个使用 SOAP 调用将请求数据导入 Excel 的项目。我可以毫无问题地返回 XML,它看起来像这样。
我有以下 XML(它实际上是一个 gpx 文件) Move 12 2017-05-05T06:25:41.000Z
脚本有问题吗?或者 getElementsbyTagName 已被弃用? t=document.getElementsByTagName('input')[0]; document.write(t.
我的页面包含许多双击脚本 我在主体顶部插入了 js 代码(通过 s.src=('parts_async_dev.js')): var innerHTML = document.getElementsB
我认为它应该只返回完全匹配。 我在我必须使用的源代码中看到类似的内容: var someArray = someObject.getElementsByTagName("item"); 除了当我检查
我遇到了这个非常奇怪的 js 问题。 总之,如果我使用(document.getElementsByTagName("p"))[0],我会得到一个找不到的元素 如果p标签位于 div 内像这样 se
正如标题所示,我想排除脚本标记。 因为使用正则表达式时(至少我认为这是正确的名称:P) 我已经到了某事的地步 var wdc = /something/g; 包含在内 var foundwdc = w
有人可以解释一下为什么我的代码不起作用!! 当我通过 Id 获取元素时,它工作得很好。但与 getElementsByTagName() 相同的方法却不会。 如果我使用 querySelector()
我正在使用 python 的 xml.dom.minidom 来解析一个 xml。我必须从多个标签中获取元素并处理它们。场景是这样的: 我有两种标签类型,并且在我使用 getElementsByTag
我正在使用 Java 应用程序读取 XML 文件并对其进行处理。该应用程序在大多数情况下都有效,但在某些情况下则无效。我有一个包含项目列表的 XML 文档。该应用程序读取文档并编译所述项目的列表,如下
在 php 中,我可以在任何 DOM 对象上使用 getElementsByTagName,但 JavaScript 似乎没有这个概念。 IE 如果 var detailsNode 是一个特定的节点,
Favorite beverages : Tea Coffee Milk 我想要'ul'中'li'的总数 Method 1 : It doesn't w
我正在尝试更改我页面中每个 h1 的颜色,但使用此代码它不会更改任何内容: function toggleDark() { document.body.style.background = "#1
只是看看别人的.js代码来学习,这个使用jQuery的网站居然引用了: document.getElementsByTagName 我猜这比使用 jQuery 选择器更快,它在所有浏览器中都安全吗?
我正在研究基于 xml 内容显示图像的内容流。我正在将它构建为一个站点,因此它是 html 和 javascript,并且出于某些未知原因 - 相信我,我已经尽可能精细地梳理它 - 我的 javasc
我的最终目标是获取单选按钮列表并选中/取消选中它们。这是我的代码: for (var radio in document.getElementsByTagName('input')) {
我是一名优秀的程序员,十分优秀!