Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript引擎如何计算HTML文档格式错误的标记数?_Javascript_Html - Fatal编程技术网

javascript引擎如何计算HTML文档格式错误的标记数?

javascript引擎如何计算HTML文档格式错误的标记数?,javascript,html,Javascript,Html,从这个问题: 作者举了一个例子: <p>have a great <a id="page-1"/>day. How are you.</p> <p><a id="page-2"/>Have a nice day.</p> <p>How <a id="page-5"/>are you</p> <p>Life is so exciting<a id="page-6"/>

从这个问题:

作者举了一个例子:

<p>have a great <a id="page-1"/>day. How are you.</p>
<p><a id="page-2"/>Have a nice day.</p>
<p>How <a id="page-5"/>are you</p>
<p>Life is so exciting<a id="page-6"/></p>
<p id="tag_count"></p>
id为
tag\u count
的标签更改为11

我的问题是javascript引擎如何做到这一点?它与Firefox和Chrome都是一致的。它是与其他浏览器一致还是某种“未定义的行为”

我的问题是javascript引擎如何做到这一点

没有。当您使用JavaScript访问生成的DOM文档时,浏览器的HTML解析器已经解决了诸如未关闭标记之类的结构问题。在您展示的代码行中发生的所有事情是,JavaScript引擎询问DOM在解析HTML及其所有问题后,文档中有多少
a
元素


对于如何从无效的标记、信息和技术中恢复,有很多话要说,这些标记、信息和技术是由不同的浏览器实现在20年的时间内确定的,并最终由的成员同意作为一套常见的纠错方法。

它是“格式不正确的”,锚并没有关闭。但是,浏览器确实会尝试修复您的错误,而它是如何做到的只是任何人的猜测,没有任何特定的标准来定义。@adeneo我知道它的格式不正确,我想问一下浏览器的行为。这不是JavaScript“引擎”,而是浏览器的HTML解析器和DOM构建代码。JavaScript DOM API只关注DOM,但这是一个庞大的主题。因此不同的浏览器会有所不同?@Danh:当然可以,这取决于HTML无效的方式,以及规范中是否包含了这一点,如果是这样的话,您使用的浏览器是否使用了规范定义的错误恢复。Invalid是无效的,您不能期望它得到一致的处理,即使在某些情况下它会得到一致的处理。
document.getElementById('tag_count').innerHTML = document.getElementsByTagName("a").length;