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