新手求助,求思路

dayrenlar 2012-10-11 11:00:12
目的:替换页面的所有“收货”为“联系”
代码:var reg = new RegExp("收货", "g");
var stringObj = document.body.innerHTML;
var newStr = stringObj.replace(reg, "联系");
document.write(newStr);
这样处理完了就没有样式了,我是在body onload里加载的,求老鸟们指点下
...全文
136 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
泡泡鱼_ 2012-10-11
  • 打赏
  • 举报
回复
你在body中绑定onload事件去执行函数,但函数中却使用document.write(newStr);
这样,你一执行完,当前页面中就只剩下了:newStr了。你右键查看一下页面的源文件就知道了

document.body.innerHTML=newStr;//试试

或者像我楼上这位举的例子一样,将所有的内容放进一个div内。省得你body中出现不可控的意外的时候,你觉得莫名其妙
001007009 2012-10-11
  • 打赏
  • 举报
回复

<!DOCTYPE html>
<html>
<head>
<meta charset="gb2312" />
<title></title>
<style type="text/css">
</style>
</head>
<body>
<div id="test">
收货123收货333333333333收货123
</div>
<script type="text/javascript">
var t = document.getElementById('test');
var reg = new RegExp("收货", "g");
var stringObj = t.innerHTML;
var newStr = stringObj.replace(reg, "联系");
t.innerHTML = newStr;
</script>
</body>
</html>
dayrenlar 2012-10-11
  • 打赏
  • 举报
回复
补充下:最好能在当前页面看到替换后的效果,我不想用document.write重新填充页面了,效果感觉不好
dayrenlar 2012-10-11
  • 打赏
  • 举报
回复
楼上的,依然很感谢你的参与
bbjbepzz 2012-10-11
  • 打赏
  • 举报
回复

var reg = new RegExp("收货", "g");
var stringObj = document.body.innerHTML;
var newStr = stringObj.replace(reg, "联系");
document.body.innerHTML = newStr;//用这个
//document.write(newStr);这个注释
泡泡鱼_ 2012-10-11
  • 打赏
  • 举报
回复
那我不知道你具体的测试环境。不好说

我测试,嵌套了几个div之类的。没发现一点问题。全都替换了
dayrenlar 2012-10-11
  • 打赏
  • 举报
回复
是真的,没效果
泡泡鱼_ 2012-10-11
  • 打赏
  • 举报
回复
你还是没明白。。。。。

不是叫你把body内的东西放去一个div。而是保证要替换的内容比较纯粹,没有其他什么容易出现意外的东西在里面。比如只有html标签或者就只是单纯的文本之类的

你试过没效果?
window.onload=function(){

var reg = new RegExp("收货", "g");
var stringObj = document.body.innerHTML;
var newStr = stringObj.replace(reg, "联系");
document.body.innerHTML=newStr;
}

这样会没效果??
dayrenlar 2012-10-11
  • 打赏
  • 举报
回复
意思我明白,把body内的东西放到一个div里来操作,但我觉得意义不大,body只是一个比div更大的容器而已,更重要的是我试过了后没效果
泡泡鱼_ 2012-10-11
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]
回复下3楼的那位仁兄,document.body.innerHTML = new Str 我试过的,效果没有全部替换掉,我发完帖子就那样试过了,效果不理想。2楼那位仁兄的想法是不错,不过意义不大,不知道是不是因为我里面的有些东西是脚本注入的关系
[/Quote]

所以我说:你放进一个div内,那个div内就只有内容的那一种,没有脚本代码,没有脚本依赖性的那种

你使用document.body这种来替换,这思路本来就不好

你要么就是在后台输出前对内容中有需要做这种替换的,先替换好,然后再输出。这才是正道

如果这种需求其实只是出现在某一个元素以内,那就只操作那一个元素

反正就这意思吧
dayrenlar 2012-10-11
  • 打赏
  • 举报
回复
回复下3楼的那位仁兄,document.body.innerHTML = new Str 我试过的,效果没有全部替换掉,我发完帖子就那样试过了,效果不理想。2楼那位仁兄的想法是不错,不过意义不大,不知道是不是因为我里面的有些东西是脚本注入的关系

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧