javascript針對DOM的應用分析(二)

來源:互聯網
上載者:User

其實在原生的也JS也有這些屬性。和JQ幾乎相同但是比JQ少一些。但是用起來卻比JQ麻煩一點。主要因為FF瀏覽器,因為FF會把你的換行也當做一個DOM元素。比如說 複製代碼 代碼如下:<div id = "dom">
<div></div>
<div></div>
</div>

我用原生的JS擷取ID為dom的元素下的子項目。用我第一章說的方法就是var a = document.getElementById("dom").getElementsByTagName("div");這個沒問題。可以alert(a.length)提示會是2,但是我們現在換一種方法擷取就是我上章提到的var b = document.getElementById("dom").childNodes;如果這樣alert(b.length)IE瀏覽器上沒問題還是2,但是在FF瀏覽器上會提示是4,這就是因為FF把換行也當做一個元素了。
所以我們必須處理一下才能用JS的那些屬性。處理思想很簡單就是遍曆一下這些元素。把元素類型為空白格而且是文本都刪除。處理函數是這樣的 複製代碼 代碼如下:function del_space(elem){
var elem_child = elem.childNodes;
for(var i=0;i<elem_child.length;i++){
if(elem_child.nodeName == "#text" && !/\S/.test(elem_child.nodeValue))
{elem.removeChild(elem_child)}
}}

我解釋一下這個函數
var elem_child = elem.childNodes;
把傳進來的elem元素的子項目都扔給elem_child; 複製代碼 代碼如下:for(var i=0;i<elem_child.length;i++){
if(elem_child.nodeName == "#text" && !/\S/.test(elem_child.nodeValue))
{elem.removeChild(elem_child)}
}

遍曆這些子項目。如果這些元素裡面有節點類型是文本並且這個文本類型節點的節點值是空的。就把它刪除

(nodeName是JS裡的一個屬性,得到這個節點的節點類型,/\S/這個是非Null 字元在JS裡的正規運算式。前面加一個驚嘆號就表示是Null 字元。test是JS的一個方法,就是把它裡面的東西和外面的東西對比一下。nodeValue表示得到這個節點裡的值removeChild也是個方法就刪除外面這個元素的某個子項目)

這樣只需要在調用這些屬性之前調用這個函數把空格清理一下就能放心用了比如 複製代碼 代碼如下:<div id = "dom">
<div></div>
<div></div>
</div>

<script>
function dom(){
var a = document.getElementById("dom");
del_space(a);調用清理空格的函數
var b = a.childNodes;擷取a的全部子節點;
var c = a.parentNode;擷取a的父節點;
var d = a.nextSbiling;擷取a的下一個兄弟節點
var e = a.previousSbiling;擷取a的上一個兄弟節點
var f = a.firstChild;擷取a的第一個子節點
var g = a.lastChild;擷取a的最後一個子節點

}
</script>

(另外說下。var b = a.childNodes;擷取的也是一個數組;所以比如我要用第一個節點就是childNodes[0];我要用第二個節點就是childNodes[1];以此類推)

到這裡擷取DOM方面就算是結束了。下章就教大家如何操作DOM元素。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.