jquery:脚本仅在控制台中按块运行chunk时运行,而不是整个运行

时间:2013-12-25 02:47:11

标签: javascript jquery

我正在做一些html页面的清理,删除锚点,只是离开文本节点,用标签<asdf>包裹所有文本节点(没有围绕它的元素),删除所有空元素,如{{ 1}}或<div></div>

当我在不同的网站上试用它时,当我复制粘贴整个脚本时,似乎有不同程度的成功。但是,当我按块运行它时,它按预期工作,不会抛出任何错误。

<span> </span>

它会抛出类似

的错误

//remove anchors but text intact $('a').replaceWith(function() { return $.text([this]); }); //wrap text nodes var items = window.document.getElementsByTagName("*"); for (var i = items.length; i--;) { wrap(items[i]) }; function wrap(el){ var oDiv = el; for (var i = 0; i < oDiv.childNodes.length; i++) { var curNode = oDiv.childNodes[i]; if (curNode.nodeName === "#text" && oDiv.childNodes.length !== 1) { var firstText = curNode; var newNode = document.createElement("asdf"); newNode.textContent = firstText.nodeValue; firstText.parentNode.replaceChild(newNode, firstText); } } } //remove empty elements $("*").filter(function () { return !($.trim($(this).text()).length); }).hide(); $('*').filter(function() { return $.trim($(this).text()) === '' && $(this).children().length == 0 }).remove()

这是由:

引起的
NotFoundError: An attempt was made to reference a Node in a context where it does not exist.

所以如果我解决了这个问题,那就可以了。

1 个答案:

答案 0 :(得分:1)

您是否通过将脚本全部写入一行来测试脚本:

$('a').replaceWith(function() { return document.createTextNode($.text([this]));}); var items = window.document.getElementsByTagName("*"); for (var i = items.length; i--;) { wrap(items[i]) }; function wrap(el){ var oDiv = el; for (var i = 0; i < oDiv.childNodes.length; i++) { var curNode = oDiv.childNodes[i]; if (curNode.nodeName === "#text" && oDiv.childNodes.length !== 1) { var firstText = curNode; var newNode = document.createElement("asdf"); newNode.textContent = firstText.nodeValue; firstText.parentNode.replaceChild(newNode, firstText); } } };$("*").filter(function () { return !($.trim($(this).text()).length);}).hide();$('*').filter(function() { return $.trim($(this).text()) === '' && $(this).children().length == 0;}).remove();

在Chrome上,它在我测试的所有地方工作,并且jQuery存在。