簡化 document.createElement()

往往我們在使用 JavaScript 來動態建立 html 元素時,總是要經過重重的敘述來設定新建立的元素。

比方說我們想要建立一個 div 標籤,而我們希望它能擁有一些文字在裡面並且具有下列的這些屬性。

id = ‘newDiv’
class = ‘newDivClass’
name = ‘newDivName’
style = ‘width: 300px; height:200px; margin:0 auto; border:1px solid #DDD’

javascript · [高亮] · [原始]

  1. // 依照原始的方式是這樣設定的
  2. var newElement = document.createElement(‘div’);
  3. var newText = document.createTextNode(‘這是存在於在新建立標籤 div 中的文字。’);
  4. newElement.id = ‘newDiv’;
  5. newElement.className = ‘newDivClass’;
  6. newElement.setAttribute(‘name ‘,‘newDivName’);
  7. newElement.style.width = ‘300px’;
  8. newElement.style.height = ‘200px’;
  9. newElement.style.margin = ‘0 auto’;
  10. newElement.style.border = ‘1px solid #DDD’;
  11. newElement.appendChild(newText);
// 依照原始的方式是這樣設定的
var newElement = document.createElement(\'div\');
var newText = document.createTextNode(\'這是存在於在新建立標籤 div 中的文字。\');
newElement.id = \'newDiv\';
newElement.className = \'newDivClass\';
newElement.setAttribute(\'name \',\'newDivName\');
newElement.style.width = \'300px\';
newElement.style.height = \'200px\';
newElement.style.margin = \'0 auto\';
newElement.style.border = \'1px solid #DDD\';
newElement.appendChild(newText);

別說看了頭暈,連打字都閒累,試試看這個方式吧!

javascript · [高亮] · [原始]

  1. // 這是經過調整的 html 元素建立方式,以後每次要建立 html 元素時就呼叫它。
  2. createEl = function(t, a, y, x) {
  3.     var e = document.createElement(t);
  4.     if (a) {
  5.         for (var k in a) {
  6.             if (k == ‘class’) e.className = a[k];
  7.             else if (k == ‘id’) e.id = a[k];
  8.             else e.setAttribute(k, a[k]);
  9.         }
  10.     }
  11.     if (y) { for (var k in y) e.style[k] = y[k]; }
  12.     if (x) { e.appendChild(document.createTextNode(x)); }
  13.     return e;
  14. }
  15. // 現在我們開始使用 createEl 這個函式來達成與第一段程式碼相同的目的
  16. var newElement = createEl(‘div’,
  17.     {‘class’: ‘newDivClass’, id: ‘newDiv’, name: ‘newDivName’},
  18.     {width: ‘300px’, height:‘200px’, margin:‘0 auto’, border:‘1px solid #DDD’},
  19.     ‘這是存在於在新建立標籤 div 中的文字。’);
// 這是經過調整的 html 元素建立方式,以後每次要建立 html 元素時就呼叫它。
createEl = function(t, a, y, x) {
	var e = document.createElement(t);
	if (a) {
		for (var k in a) {
			if (k == \'class\') e.className = a[k];
			else if (k == \'id\') e.id = a[k];
			else e.setAttribute(k, a[k]);
        }
    }
    if (y) { for (var k in y) e.style[k] = y[k]; }
    if (x) { e.appendChild(document.createTextNode(x)); }
    return e;
}
// 現在我們開始使用 createEl 這個函式來達成與第一段程式碼相同的目的
var newElement = createEl(\'div\',
	{\'class\': \'newDivClass\', id: \'newDiv\', name: \'newDivName\'},
	{width: \'300px\', height:\'200px\', margin:\'0 auto\', border:\'1px solid #DDD\'},
	\'這是存在於在新建立標籤 div 中的文字。\');

乍看之下第二個方法似乎使用了較長的敘述來達成相同的目的,其實不然,別忘了 createEl 這個函式可是很環保的呢!可以重複使用不說,就連討厭的同類敘述語句這個麻煩也免掉了呢。


13 Responses to “簡化 document.createElement()”

  1. 星辉一冷 Says:

    的确非常实用。
    酷~~~

  2. 路人華 Says:

    受教了,感恩^_^

  3. nada Says:

    不错,总结的好!!

  4. 王万本 Says:

    不错!!,支持!

  5. binbin252 Says:

    請問,我把你的程式用



    包起來,然後取名*.htm

    爲什麼什麼都沒出現呢??
    請問這樣試對嗎?
    請指教ㄧ下,謝謝.

  6. Beata Says:

    你的html檔案中是這樣的格式嗎?
    <html>

    <head>
    # Javascript 的標籤可以放這裡
    </head>

    <body>

    #或者放在 body 要結束之前
    </body>
    </html>

  7. 訪客 Says:

    我爱我的乖乖

  8. Sammer Says:

    谢谢!^_^

  9. 大灰狼 Says:

    非常不错,正在学习中~

  10. elves Says:

    谢谢,嘿嘿!记下,并去体会去!

  11. 风渐寒 Says:

    MM得UI和js都很厉害哦,同好,认识下吧。

  12. beyond Says:

    不错 受教了

  13. Hosting Express Says:

    非常實用的javascript,多謝

Leave a Comment