PyCharm 警告:结束标签与 <p> 标签不匹配
PyCharm warn: Closing tag matches nothing for <p> tag
在 检查我的 PyCharm 中的代码 之后。它警告我
结束标签什么都不匹配 最后 </p>
标签
但是我没有发现我的代码有任何错误。 p 标签正确关闭。
<p v-if="files.length">
<ul>
<li v-for="file in files">
{{file.name}} <span v-if="file.success"> - success. </span><span v-if="file.error"> - fail. </span>
<span v-if="file.success || file.error">{{file.xhr.responseText}}</span>
</li>
</ul>
</p>
如何正确解决此警告?
此警告是由无效 HTML 引起的。 ul
元素不允许出现在 p
元素中。可以通过重构源以遵循 HTML specification.
来解决警告
删除 p
元素:
<ul>
<li v-for="file in files">
{{file.name}} <span v-if="file.success"> - success. </span><span v-if="file.error"> - fail. </span>
<span v-if="file.success || file.error">{{file.xhr.responseText}}</span>
</li>
</ul>
将p
元素转换为div
元素:
<div v-if="files.length">
<ul>
<li v-for="file in files">
{{file.name}} <span v-if="file.success"> - success. </span><span v-if="file.error"> - fail. </span>
<span v-if="file.success || file.error">{{file.xhr.responseText}}</span>
</li>
</ul>
</div>
答案 中对规范的相关部分进行了很好的总结。请注意,答案专门针对 ol
而不是 ul
,但仍然适用,因为它们的类别和内容模型相同。
如果 PyCharm 警告消息更具体一些就更好了。这可以在 PyCharm 的付费版本中通过自定义检查来完成,但在社区版中是不可能的。 https://www.jetbrains.com/help/pycharm/creating-custom-inspections.html
我在项目中也遇到过这个问题。
我的 DOM 结构如下:
<p>test<div>test2</div></p>
并且,如果我像上面那样编写 DOM 结构,WebStorm 将警告 'closing tag matches nothing'
而当我更改此结构时,例如:将 div 块元素更改为内联元素 span,则它可以正常工作。
所以,我的建议是改变您的 DOM 结构。例如使用 div 替换 p 或在 p 标签中使用一些内联元素。
还有一件事,正如我在本文档中查看的那样 https://www.w3.org/TR/html4/sgml/dtd.html
文档说标签 p 通常包含内联元素。所以,我认为这是你我上面提到的问题的根本原因。因此,在标签 p 中使用内联元素或使用 like div 或其他元素来替换标签 p.
在 检查我的 PyCharm 中的代码 之后。它警告我
结束标签什么都不匹配 最后 </p>
标签
但是我没有发现我的代码有任何错误。 p 标签正确关闭。
<p v-if="files.length">
<ul>
<li v-for="file in files">
{{file.name}} <span v-if="file.success"> - success. </span><span v-if="file.error"> - fail. </span>
<span v-if="file.success || file.error">{{file.xhr.responseText}}</span>
</li>
</ul>
</p>
如何正确解决此警告?
此警告是由无效 HTML 引起的。 ul
元素不允许出现在 p
元素中。可以通过重构源以遵循 HTML specification.
删除 p
元素:
<ul>
<li v-for="file in files">
{{file.name}} <span v-if="file.success"> - success. </span><span v-if="file.error"> - fail. </span>
<span v-if="file.success || file.error">{{file.xhr.responseText}}</span>
</li>
</ul>
将p
元素转换为div
元素:
<div v-if="files.length">
<ul>
<li v-for="file in files">
{{file.name}} <span v-if="file.success"> - success. </span><span v-if="file.error"> - fail. </span>
<span v-if="file.success || file.error">{{file.xhr.responseText}}</span>
</li>
</ul>
</div>
答案 中对规范的相关部分进行了很好的总结。请注意,答案专门针对 ol
而不是 ul
,但仍然适用,因为它们的类别和内容模型相同。
如果 PyCharm 警告消息更具体一些就更好了。这可以在 PyCharm 的付费版本中通过自定义检查来完成,但在社区版中是不可能的。 https://www.jetbrains.com/help/pycharm/creating-custom-inspections.html
我在项目中也遇到过这个问题。
我的 DOM 结构如下:
<p>test<div>test2</div></p>
并且,如果我像上面那样编写 DOM 结构,WebStorm 将警告 'closing tag matches nothing'
而当我更改此结构时,例如:将 div 块元素更改为内联元素 span,则它可以正常工作。
所以,我的建议是改变您的 DOM 结构。例如使用 div 替换 p 或在 p 标签中使用一些内联元素。
还有一件事,正如我在本文档中查看的那样 https://www.w3.org/TR/html4/sgml/dtd.html
文档说标签 p 通常包含内联元素。所以,我认为这是你我上面提到的问题的根本原因。因此,在标签 p 中使用内联元素或使用 like div 或其他元素来替换标签 p.