zoukankan      html  css  js  c++  java
  • innerText和innerHTML, outerHTML

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

    用法:

    <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)">inerHTML内容</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 属性的

  • 相关阅读:
    反转字符串
    数组
    复杂度分析(二)
    复杂度分析(一)
    业务应该这么写--特性
    5种方法快速启动一个应用程序
    业务应该这么写--表达式树
    业务应该这么写--泛型
    业务应该这么写--异常处理
    关于关系型数据库外键,要减轻数据库压力的一些说法
  • 原文地址:https://www.cnblogs.com/ghc666/p/7510682.html
Copyright © 2011-2022 走看看