JavaScript innerHTML

Willam2004 2009-06-23 05:34:55
目的:在in.html文件,可以实现点击按钮,加载doc.htm里的内容到div层中
in.html文件

<script>

function func(){
var doc=window.frames["IFrame1"].document;
var inner = doc.body.innerHTML;

//alert("Inner:" + inner);

var divdoc = document.getElementById("show");
//setInnerHTML(divdoc,doc.body.innerHTML);
divdoc.innerHTML = doc.body.innerHTML;
}


</script>

<input type="button" name="ok" value="点击" onclick="func();">
<div id="show"></div>
<iframe name="IFrame1" src="doc.htm"/>

这个是doc.htm

<input name="in" value="`fdsafd" type="text"></input>

结果:
在IE6下,点击按钮in.htm,没有反应
再Firefox3.0.11,点击按钮有反应,正常添加文本框。
已知,ie6的innerHTML显示的话,会将双引号去掉。firefox不会。
只有再input的value的开头含有重音符`,才会出现该问题,(中间或者末尾都不会出现)其他字符没有出现该情况。
请问该如何操作,使IE可以达到跟FIrefox一样的效果?
...全文
347 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
Willam2004 2009-06-24
  • 打赏
  • 举报
回复
你好,你的正则表达式针对
<input value=some type=text size=30>
是可以替换,起作用,
但是针对:
<input size=30 value=some>
即调换了位置,类似却不可以。
能否将正则表达式不根据value的所在位置顺序进行匹配替换?
linuxlsx 2009-06-24
  • 打赏
  • 举报
回复
学习楼上的几种方法了 自己再试一下咯
natineprince 2009-06-24
  • 打赏
  • 举报
回复

function replace(str){
return str.replace(/(<input [^(value)]*value)=([^\s>]+)(\s|>)/gi, "$1=\"$2\"$3")
}
Willam2004 2009-06-24
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 natineprince 的回复:]
JScript codefunctionfunc(){vardoc=window.frames["IFrame1"].document;varinner=doc.body.innerHTML;//alert("Inner:" + inner);vardivdoc=document.getElementById("show");//setInnerHTML(divdoc,doc.body.innerHTML);divdoc.innerHTML=replace(doc.body.innerHTML);
}functionreplace(str){returnstr.replace(/=([^\s>]+)(\s|>)/gi,"=\"$1\"$2")
}
[/Quote]
首先非常感谢你的帮助!这种方式是在等于号之间加上双引号,这样在当前环境下是可以满足。但在实际应用中,我是整个页面取过来,里面不只是含有INPUT标签。对于像Script里面的代码,由于也加上了双引号,而不能正常使用。你能否再帮我根据特定的<INPUT>标签里value替换,再写个过正则表达式?
Willam2004 2009-06-24
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 lihan6415151528 的回复:]
JScript codevardoc=window.frames["IFrame1"];
doc=(doc.contentWindow||doc).document;
[/Quote]
如此只是兼容ie和firefox中取document,但是对于在ie浏览取doc.body.innerHTML仍然存在问题,如果input的value的值前面是`这个符号,无法显示问题。
楼上请看清问题。
lihan6415151528 2009-06-24
  • 打赏
  • 举报
回复

var doc=window.frames["IFrame1"];
doc = (doc.contentWindow || doc).document;
笑的自然 2009-06-24
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 xfsnero 的回复:]
var doc=window.frames["IFrame1"];
doc = (doc.contentWindow || doc).document;
[/Quote]

精辟!支持!
Willam2004 2009-06-24
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 natineprince 的回复:]
JScript codefunctionreplace(str){returnstr.replace(/(<input [^>]*value)=([^\s>]+)(\s|>)/gi,"$1=\"$2\"$3")
}

再试试.我正则不是很好.
[/Quote]
你好,这个可以满足我现在的要求,非常感谢。
正则表达式的确很强大,当初解决的思路跟你是一样,但由于没有写过JavaScript的正则表达式,无法前进。
还好遇见你这样的牛人,帮我解决了。以后有正则表达式方面的问题,还望多请教,哈哈,结贴给分!
xiongzhijian 2009-06-24
  • 打赏
  • 举报
回复
学习..
natineprince 2009-06-24
  • 打赏
  • 举报
回复
function replace(str){
return str.replace(/(<input [^>]*value)=([^\s>]+)(\s|>)/gi, "$1=\"$2\"$3")
}


再试试.我正则不是很好.
monexus 2009-06-23
  • 打赏
  • 举报
回复
var doc=window.frames["IFrame1"];
doc = (doc.contentWindow || doc).document;
natineprince 2009-06-23
  • 打赏
  • 举报
回复


function func(){
var doc=window.frames["IFrame1"].document;
var inner = doc.body.innerHTML;

//alert("Inner:" + inner);

var divdoc = document.getElementById("show");
//setInnerHTML(divdoc,doc.body.innerHTML);
divdoc.innerHTML = replace(doc.body.innerHTML);
}

function replace(str){
return str.replace(/=([^\s>]+)(\s|>)/gi, "=\"$1\"$2")
}
Willam2004 2009-06-23
  • 打赏
  • 举报
回复
补充下,上述的重音符,是键盘上TAB键上方的一个键。

87,920

社区成员

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

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