<div id="wrapper">
<p>一个段落在这里</p>
<span>这里是一个span</span>
</div>
我们如果获取div#wrapper的innerHTML值应该就是:
<p>一个段落在这里</p>
<span>这里是一个span</span>
<P>一个段落在这里</P><SPAN>这里是一个span</SPAN>
div.innerHTML = "<strong>\"This is innerHTML\"</strong>";
div.innerHTML = "<script>alert('dd')<\/script>";代码执行后,标签会被插入div中,但脚本在任何浏览器中都不会执行。再来修改一下代码:
div.innerHTML = "<script defer='defer'>alert('dd')<\/script>";这段代码为innerHTML加入了一个defer特性,但正如上文所讲的,script是一个"没有作用域"的元素,所以在IE9及以下浏览器中,脚本还是不会被执行。这个时候只要在<script>前面添加一个字符串或者其他"有作用域"的元素即可,为了不影响文档的实际内容,一般在script标签之前添加一个隐藏的input元素即可,代码如下:
div.innerHTML = "<input type='hidden'/><script defer='defer'>alert('dd')<\/script>";这样在 IE9及以下的浏览器中,脚本就能够执行了。
<div id="wrapper">
<p>一个段落在这里</p>
<span>这里是一个span</span>
</div>
<DIV id=wrapper><P>一个段落在这里</P><SPAN>这里是一个span</SPAN></DIV>
div.insertAdjacentHTML("beforeend","<p>在结束前插入一个</p>");
console.log(div.innerHTML);
<p>一个段落在这里</p>
<span>这里是一个span</span>
<p>在结束前插入一个</p>
<meta http-equiv="x-ua-compatible" content="IE=IEVersion"/>其中,IEVersion的可能取值有:
IE5+,Firefox3.5+,chrome,Opera8+,Safari3+支持children属性。
4.3 contains方法
<body> <div id="div-1"> <div id="title"> <h1 id="title-h1">标题</h1> <span id="more">更多</span> </div> </div> <div id="div-2"> <div id="content-wrapper"> <div id="block"> <p id="desc">这里是一段描述</p> <img id="img" src=""/> </div> </div> </div> </body>
var div2 = document.getElementById("div-2"), div1 = document.getElementById("div-1"), more = document.getElementById("more"); alert(nodeContains(div1, more)); alert(nodeContains(div2, more)); function nodeContains(node, childNode){ var result = false; while(childNode != null){ if(childNode === node){ result = true; break; } childNode = childNode.parentNode; } return result; }
代码执行后将分别弹出true和false
注:Firefox9+和其他浏览器都支持contains方法。
alert(div1.contains(more)); alert(div2.contains(more));
<div id="wrapper">那么调用div#wrapper的innerText属性返回的内容可能是:
<p>一个段落在这里</p>
<span>这里是一个span</span>
</div>
一个段落在这里也可能是:
这里是一个span
一个段落在这里这主要还是由于不同浏览器处理空白符节点的方式不同而导致的。
这里是一个span
div.innerText = "<strong>Hello</strong>";代码执行后,显示结果为: