【发布时间】:2014-05-30 04:45:48
【问题描述】:
我必须检查“p”元素是否包含一些文本,如果是,则创建另一个元素“span”,然后克隆“p”元素并将其附加并替换为“span”元素。但是我收到以下错误:
未捕获的 NotFoundError:无法在“节点”上执行“appendChild”: 新的子元素为空。
这是我的代码:
if ($("p:contains('computer forensics is')")) {
var highlight = document.createElement('span');
highlight.className = 'highlight';
highlight.style.backgroundColor = "red";
highlight.id = "";
highlight.setAttribute("title", "");
var node = $("p:contains('computer forensics is')");
var wordClone = node.clone(true);
highlight.appendChild(wordClone);
node.parentNode.replaceChild(highlight, node);
}
【问题讨论】:
-
考虑正确混合使用 jQuery 和纯 JavaScript 方法。
-
正如
VisioN建议的那样,如果你打算使用jQuery,不妨将它用于它支持的所有东西。 jQuery 代码通常比原始 JavaScript 更小(并且更兼容跨浏览器)。 -
只要使用 jQuery 就可以了,而且会丢失相当多的代码行。如果你想同时使用 jquery 节点前缀 a $ 这样很容易跟踪普通节点上的 jquery 实例。
-
另外,你的
if子句没有意义,因为检查元素是否存在应该使用$(...).length > 0条件。 -
我很确定
spans 并不意味着在有效的 HTML 中包含paragraphs。span只是您需要在段落或 div 中设置样式的一系列字符。
标签: javascript jquery dom