我有这样的代码
<div class="footer"><p>some text<p></div>
你可以看到p的结束标记是省略的。 如何在不编辑原始代码的情况下修复它? 我认为JavaScript可以做到这一点。
答案 0 :(得分:2)
您只需修改页脚元素的innerHTML即可。
var footer = document.getElementsByClassName('footer')[0];
footer.innerHTML = "<p>some text</p>";
这将替换页脚中的内容。
答案 1 :(得分:2)
var div = document.querySelector('div.footer'); // get div element
Array.prototype.forEach.call(div.childNodes, function(childNode){ // for every element inside of div
if (childNode.innerHTML === '') { // check if that element is empty
div.removeChild(childNode); // remove that element
}
});
工作示例:http://jsfiddle.net/soygb9cs/
它有效,因为现代浏览器会自动关闭标签。因此,如果在结束标记中省略反斜杠,则会获得一个额外的空标记。
从<div><p>some text<p></div>
浏览器创建<div><p>some text</p><p></p></div>
答案 2 :(得分:1)
JavaScript 可以这样做,但是因为JavaScript在页面加载后运行,所以您的网页仍会被归类为W3C无效(https://validator.w3.org/)。
如果你有很多带有这个错误的HTML,并且你试图节省一些手工劳动,我建议使用像notepad++这样的东西。将您的HTML复制到一个新文档中,并执行正则表达式查找和替换,如下所示: