[舉一反三]使用javascript轉換字串為dom對象(字串動態建立dom)

來源:互聯網
上載者:User

前言:

在javascript裡面動態建立標準dom對象一般使用:

  var obj = document.createElement('div');

然後再給obj設定一些屬性。

但是,在實際使用過程中,有些人可能會想,要是能這樣建立標準的dom對象就好了

 虛擬碼:var obj=strToDom('<div id="div_1" class="div1">Hello World!</div>');

那麼今天的目的就是教大家怎麼去實現一個這樣的方法用來把字串直接轉換為標準的dom對象

 

start:

其實實現這樣的一個轉換是很簡單的,這裡主要是利用了一個屬性innerHTML.

innerHTML,我相信大家都使用過,特別是動態往一個元素裡面插內容時使用,這裡我還是在介紹下innerHTML,方便於還不太熟悉的人。

innerHTML不是w3c標準,是由ie發明創造出來的,但是由於這個屬性的方便性,和當時微老大的地位,其它非ie瀏覽器也內建了innerHTML並給出了支援。

雖然innerHTML不是w3c標準,但是卻是一個事實標準,這個事實標準很重要,也就是目前主流瀏覽器都支援innerHTML,自然就做到了相容多瀏覽器。

code:

 function parseDom(arg) {

   var objE = document.createElement("div");

   objE.innerHTML = arg;

   return objE.childNodes;

};

短短几行代碼就實現了轉換,我們首先用標準的方法建立一個div出來,在用innerHTML來插入一個元素,其實也就是利用瀏覽器自己的核心演算法來實現的一個轉換。在用childNodes返回出來。

這樣我們就完成了一個字串到標準dom的轉換,巧妙的利用瀏覽器本身的演算法,可以用簡單少量的代碼來完成大量複雜的轉換,我們不用去解析字串,而是交給瀏覽器自己來完成,這樣既準確又無誤。

使用:

var obj=parseDom('<div id="div_1" class="div1">Hello World!</div>');

var obj=parseDom('<div id="div_1" class="div1">Hello World!</div><span>多個也沒關係</span>');

注意:

childNodes返回的是一個類似數組的list。所以如果是一個元素,要使用這個dom需要這樣使用obj[0]。如果是多個同級的dom轉換,可以這樣使用obj[0]、obj[1]…

end

 

到這裡就結束了,在這裡向大家推薦一個我自己寫的js架構,上面的這個方法整合在架構裡面了

使用:b$.parseDom('<div id="div_1" class="div1">Hello World!</div>')

bBank 架構介紹:http://www.cnblogs.com/bruceli/archive/2010/04/15/bBank.html

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.