JavaScript:DOMフラグメントの作成

JavaScriptを記述する必要があり、JavaScriptで次のようなものを記述しなければならなかった場合:

var p = document.createElement( "p");

p.appendChild(document.createTextNode( "Real Fish Fish。"));

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

div.setAttribute( 'id'、 'new');

div.appendChild(p);



役に立つかもしれません。



問題:相互にネストされた複数の要素を作成すると、コードが非常に複雑になります。



問題を解決するための簡単なツール-create()関数(以下のソース)を提供します。 たとえば、テキストの段落を作成します。

var el = create( "p"、{}、 "Farewell、Love!");



または、段落とその中のリンクを持つdiv:

var div = create( "div"、{id: "new"、style: "background:#fff"}、

create( "p"、{align: 'center'}、

「はじめに:」、

create( 'a'、{href: " ua.fishki.net/picso/kotdavinchi.jpg "}、

「Picture」)、

「:終了」)

);



または、ここに表があります:

var holder = document.getElementById( "holder2");

varテーブル;

var td;

holder.appendChild(

テーブル=

create( "table"、{id: 'ugly'、cols:3}、

create( "tbody"、{}、

作成(「tr」、{}、

create( "td"、{width:'10% '}、

「こんにちは」)、

td =

create( "td"、{style: 'background:#fcc'}、

「そこ」)、

create( "td"、{Class: 'special2'}、 "everywhere")







);



注意してください:



1. IEはtbody要素を必要とします。そうでない場合、テーブルの表示を拒否します。

2.クラス属性が何かと競合するため、クラスとして記述する必要があります。 これは結果に影響しないようです。

3.例のtable =およびtr =を使用すると、作成されたネストされたオブジェクトを保存して、それらをさらに操作できます。

4.このコードは、IE、Mozilla、およびOperaで動作します。



機能自体



関数作成(名前、属性){

var el = document.createElement(name);

if(typeof attributes == 'object'){

for(属性の変数i){

el.setAttribute(i、attributes [i]);



if(i.toLowerCase()== 'class'){

el.className = attributes [i]; // IE互換性のため



} else if(i.toLowerCase()== 'style'){

el.style.cssText = attributes [i]; // IE互換性のため

}

}

}

for(var i = 2; i <arguments.length; i ++){

var val = arguments [i];

if(typeof val == 'string'){val = document.createTextNode(val)};

el.appendChild(val);

}

return el;

}



イワン・クルマノフのアイデアをありがとう

元の記事と実際の例: ahinea.com/2006/04/14/javascript-dom-create



All Articles