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.