ie6-ie8 不支持textContent支持innerText
chrome 支持textContent innerText
fireFox 僅支持textContent不支持innerTextjavascript
<body> <div id="s1"> <p>ceshi </p> </div> </body> <script> var s1=document.getElementById('s1'); console.log(s1.innerHTML); //輸出 <p>ceshi </p> console.log(s1.outerHTML); //輸出<div id="s1"> <p>ceshi </p> </div> console.log(s1.innerText=s1.textContent); //輸出ceshi console.log(s1.outerText=s1.textContent); //輸出ceshi </script>
修改css樣式 css
通常用js修改樣式,都是獲取id,如java
var oDiv=document.getElementById("div1"); //alert(oDiv.style.width); //獲取非行間樣式
可是這是修改行間的屬性,還記得style有優先級嗎,有時候我想改的不是行間的代碼,改的是style標籤的代碼node
就須要用到如下的函數chrome
//ie下 alert(oDiv.currentStyle.width); //chrome 和firefox下 alert(getComputedStyle(oDiv,false).width);
這就涉及到兼容性問題瀏覽器
解決此問題就最好用if語句函數
if(oDiv.currentStyle) { alert(oDiv.currentStyle.width); } else { alert(getComputedStyle(oDiv,false).width); }
childNodes,firstElementChild,firstChildspa
首先先看看childnodesfirefox
<body>
<ul id="ul1">
<li></li>
<li></li>
</ul>
</body>
<script>
var oUl =document.getElementById("ul1");
for (var i=0;i<oUl.childNodes.length;i++)
{
if (oUl.childNodes[i].nodeType==1) //nodeType=3表示文本節點,即空格,=1就是標籤節點
{
oUl.childNodes[i].style.background='red';
}
}
</script>
這裏的childNodes.length爲5code
和咱們想的2相差很大,緣由是由於childnodes在ie能夠正常顯示爲2,可是在谷歌和火狐瀏覽器中就顯示5
由於谷歌和火狐瀏覽器把<li></li>前面的空格也看成一個childnode,叫文本節點。
爲了不這個問題
能夠用children、
for (var i=0;i<oUl.children.length;i++) { oUl.children[i].style.background='green'; }
這是全兼容的,
獲取第一個節點有ie和火狐也有不一樣的函數,爲了兼容性,能夠寫成這樣
if (oUl.firstElemenChild) //用於火狐和chrome { oUl.firstElementChild.style.background='black'; } else { oUl.firstChild.style.background="black"; //用於ie5-7 }