我试图在加载后使用javascript从html页面删除文本“嗨妈妈”。
我不能使用像jQuery这样的任何框架。
我可以使用DOM,但不知道它在哪里,除了它包装在某处的标签中。
这可以用普通的旧Javascript完成吗?
答案 0 :(得分:2)
这是一个非常简单的DOM漫游,你可以做。
如果您认为在同一文本节点中可能出现多次,但可能会有改进,但听起来并非如此。
DEMO: http://jsfiddle.net/UrNWb/
var text_to_remove = "Hi Mom";
function dom_walk( el ) {
if( el.nodeType === 1 && el.childNodes.length ) {
if( el.nodeName.toLowerCase() !== 'script' ) {
for( var i = 0; i < el.childNodes.length; i++ ) {
dom_walk( el.childNodes[ i ] );
}
}
} else if( el.nodeType === 3 ) {
if( el.data.indexOf( text_to_remove ) !== -1 ) {
el.data = el.data.replace( text_to_remove, '' );
}
}
}
dom_walk( document.body );
答案 1 :(得分:1)
最简单的解决方案:
function removeText(s) {
var el, els = document.getElementsByTagName('*');
var node, nodes;
for (var i=0, iLen=els.length; i<iLen; i++) {
el = els[i];
if (el.tagName.toLowerCase() != 'script') {
nodes = el.childNodes;
} else {
nodes = [];
}
for (var j=0, jLen=nodes.length; j<jLen; j++) {
node = nodes[j];
if (node.nodeType == 3) {
node.data = node.data.replace(s, '');
}
}
}
}
window.onload = function() {
removeText('hi mom');
}
你也可以做一个递归版本,但上面的内容更简单。
答案 2 :(得分:-1)
document.body.innerHTML = document.body.innerHTML.replace("Hi Mom", "")
应该是一个不错的开始。