如何修改省略close标签而不修改原始代码?

时间:2015-05-29 09:35:01

标签: javascript html

我有这样的代码

<div class="footer"><p>some text<p></div>

你可以看到p的结束标记是省略的。 如何在不编辑原始代码的情况下修复它? 我认为JavaScript可以做到这一点。

3 个答案:

答案 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复制到一个新文档中,并执行正则表达式查找和替换,如下所示:

Find & Replace in Notepad++