js中 innerHTML与innerText的用法与区别及解决Firefox不支持Js的InnerHtml问题

来源:互联网 发布:进销存软件是什么 编辑:程序博客网 时间:2024/05/06 20:25
用法:


<div id="test">
   <span style="color:red">test1</span> test2
</div>


在 JS中可以使用:


test.innerHTML:


  也就是从对象的起始位置到终止位置的全部内容,包括Html标签。 


  上例中的test.innerHTML的值也就是“<span style="color:red">test1< /span> test2 ”。


test.innerText: 


  从起始位置到终止位置的内容, 但它去除Html标签 


  上例中的text.innerTest的值也就是“test1 test2”, 其中span标签去除了。 


test.outerHTML:


  除了包含innerHTML的全部内容外, 还包含对象标签本身。


  上例中的text.outerHTML的值也就是<div id="test">< span style="color:red">test1</span> test2</div>


完整示例:


<div id="test">
   <span style="color:red">test1</span> test2
</div>


<a href="javascript:alert(test.innerHTML)">innerHTML内容</a>
<a href="javascript:alert(test.innerText)">innerTEXT内容</a>
<a href="javascript:alert(test.outerHTML)">outerHTML内容</a>


特 别说明:


  innerHTML是符合W3C标准的属性,而innerText只适用于IE浏览器,因此,尽可能地去使 用innerHTML,而少用innerText,如果要输出不含HTML标签的内容,可以使用innerHTML取得包含HTML标签的内容后,再用正 则表达式去除HTML标签,下面是一个简单的符合W3C标准的示例:


<a href="javascript:alert(document.getElementById('test').innerHTML.replace(/& lt;.+?>/gim,''))">无HTML,符合W3C标准</a>


-------------------------------------------------------------------------------------------------------------------------------


<html>
<head></head>
<frameset frameborder="yes" frameborder="1" rows="40%,*">
<frame name="top" src="1.html">
<frame name="bottom" src="2.html">
</frameset>
</html>


<html>
<head>
<script language="javascript">
function init()
{    
    var aaa = parent.window.frames[0].document.body.innerHTML; 
    alert(aaa);
}
</script>
</head>
<body>
<p align="center">nothing</p>
<p align="center"><input type="button" onclick="init()"; value="click"></p>
</body>
</html>


<html>
<center> 汽车 房产 女人</center>
</html>


解决Firefox不支持Js的InnerHtml问题




正 文:
<  
    由于W3C标准对Javascript语法进行了规范,即ECMAScript。而Firefox严格遵守ECMAScript规范,所以对 javascript一些属性和方法不支持(其实不能说是Firefox不支持,而是对不规范的写法不支持,符合标准的写法还是支持的),Firefox 希望程序设计师都采用规范的ECMAScript标准来书写代码,这样一些适应传统习惯的IE下的写法就会撞到很多的问题。    比如飘 易经常使用的利用JS的InnerHtml属性动态替换广告代码的写法就在Firefox浏览器下不支持了。如飘易的这个文章:网站加载广告大提速,广告不再烦,在Firefox下就不能正确替换了。    原来的代码如 下:


<span id="ad_1"></span>
<SPAN id="ad_11" style="visibility:hidden;">
<script language="JavaScript" src="/js/ad_1.js"></script>
</SPAN>
<SCRIPT>ad_1.innerHTML=ad_11.innerHTML;ad_11.innerHTML="";</SCRIPT>
    上 面的代码在IE、chrome等浏览器下可以被正确的执行替换,而在Firefox下就不能。其实解决方法也很简单,就让我们按照ECMAScript规 范写代码即可。上面的代码修正为下面的即可: 
<span id="ad_1"></span>
<SPAN id="ad_11" style="visibility:hidden;">
<script language="JavaScript" src="/js/ad_1.js"></script>
</SPAN>
<SCRIPT>document.getElementById("ad_1").innerHTML=document.getElementById("ad_11").innerHTML;document.getElementById("ad_11").innerHTML="";</SCRIPT>
     不 要直接使用DIV或SPAN的id,而是通过 document.getElementById("div_id") 来执行替换即可。另 外,Firefox是不支持 innerTEXT 属性的。  

0 0
原创粉丝点击