合并/最小化多个javascript document.body.innerHTML.replace

时间:2013-09-13 22:20:42

标签: javascript replace innerhtml

我有这个javascript代码,基本上是3个(接近)相同但替换是不同的:

var d = document;
d.body.innerHTML = d.body.innerHTML.replace(/foo/g,'fooo');
d.body.innerHTML = d.body.innerHTML.replace(/foobar/g,'fooobaaar');
d.body.innerHTML = d.body.innerHTML.replace(/foobarlicious"/g,'');

是否有可能将其最小化?

我试过这个(知道它不起作用):

d.body.innerHTML = d.body.innerHTML.replace(/foo/g,'fooo'),
                   d.body.innerHTML.replace(/foobar/g,'fooobaaar'),
                   d.body.innerHTML.replace(/foobarlicious"/g,'');

当然没有......

我也尝试将var document.body.innerHTML作为

var dbi = document.body.innerHTML;

这也没有用,因为只有var d = document;才有理由为什么这不起作用?

2 个答案:

答案 0 :(得分:3)

链接.replace()方法:

d.body.innerHTML = d.body.innerHTML.replace(/foo/g,'fooo').replace(/foobar/g,'fooobaaar').replace(/foobarlicious"/g,'');

...但你可以保留一些空格以使其可读:

d.body.innerHTML = d.body.innerHTML.replace(/foo/g,'fooo')
                                   .replace(/foobar/g,'fooobaaar')
                                   .replace(/foobarlicious"/g,'');

关于您询问的dbi变量:

  

我还尝试将document.body.innerHTML改为

var dbi = document.body.innerHTML;
     

这也没有用,因为只有var d = document;才有理由说这不起作用?

您的dbi变量将是一个字符串,设置为正文html的初始值,但它不保留文档正文的实时链接。您可以对该变量进行替换或其他操作,但要查看文档中的更改,您必须将其分配回来:

document.body.innerHTML = dbi;

您的d = document内容有效,因为d是对文档本身的实时引用。

答案 1 :(得分:1)

如上所述链接它们,或者将innerHTML存储为变量,并在根据需要编辑变量后设置innerHTML。

var iH = document.body.innerHTML;
iH = iH.replace(/foo/g,'fooo');
iH = iH.replace(/foobar/g,'fooobaaar');
iH = iH.replace(/foobarlicious"/g,'');
document.body.innerHTML = iH;

如前所述,编辑body的innerHTML 是一个好主意。