2025
11
04
2010
11
08
JavaScript でHTML要素を生成する関数
JavaScript でHTML要素を生成するには、document.createElement を使用します。そして、そのHTML要素にさまざまな属性を追加していきます。HTML要素の生成と属性の追加が一度にできたら便利でしょう。そう考えて、作成したのが、neta.elements.element です。
書式
HTML要素=neta.elements.element(tagaName,propaties)
引数
neta.elements.element は2つの引数を取ります。第一引数は、生成するHTML要素の tagName です。第二引数は、生成されたHTML要素の属性を指定するオブジェクトです。
引数が1つで、それがオブジェクトである場合には、生成する要素はDIV要素で、そのDIV要素に対して指定した属性を適用します。引数が1つで、それが tagName である場合には、その生成する要素は tagName が示す要素です。
引数がない場合には、属性指定のないDIV要素を生成します。
属性指定オブジェクト
{innerHTML:'内容です。', onclick:func} のように記述します。各属性の間はカンマ(,)で区切ります。
スタイルの指定
{innerHTML:'内容です。', style:{backgroundColor:'#cc0000'}} のように記述します。style プロパティの値はオブジェクトで、そのオブジェクトにスタイルのプロパティを記述します。プロパティ名にはハイフン(-)を使用できませんので、ハイフン(-)を省略して続く文字を大文字にします。
属性の追加変更(attr)
HTML要素の属性は、必ずしも最初に指定する必要はありません。後で attr メソッドを実行することにより、追加変更が可能です。
子要素の追加(append)
子要素は append メソッドで追加できます。子要素が1つであれば、標準の appendChild と同じです。子要素の配列を引数に取れば、その子要素を順番に追加します。
文書への追加は?
生成したHTML要素を文書に追加するための特別なメソッドは用意していません。標準の appendChild や insertBefore を使用して下さい。
記述例
neta.addListener(function(){
var container=document.getElementById('container');
var div=neta.elements.element({
innerHTML:'この部分は neta.elements.element で生成しました。',
style:{color:'#33C'}
});
var span=neta.elements.element('span',{
innerHTML:'この部分は append メソッド追加しました。',
onclick:function(){alert('Hello!')},
style:{color:'#C33'}
});
var btn=neta.elements.element('button',{
innerHTML:'Click!',
onclick:function(){alert('Hello!')}
});
div.append([span,btn]);
container.appendChild(div);
btn.attr({style:{color:'#c00'}});
});
実行例
ソースコード
if(!window['neta'])window['neta']={};
if(!window['neta']['elements'])window['neta']['elements']={};
(function(){
var a=neta.elements;
a.element=function(tagName,propaties){
propaties=propaties||{};
if(typeof tagName=='object'){
propaties=tagName;
tagName='div';
}
tagName=tagName||'div';
propaties=propaties||{};
var elm=document.createElement(tagName);
var attr=function(propaties){
for(var k in propaties){
if(k=='style'){
for(var m in propaties[k]){
elm[k][m]=propaties[k][m];
}
}else{
elm[k]=propaties[k];
}
}
}
attr(propaties);
elm.attr=attr;
elm.append=function(elms){
if(elms.length){
for(var i=0;i<elms.length;i++){
elm.appendChild(elms[i]);
}
}else{
elm.appendChild(elms);
}
}
return elm;
}
})();
収録先
neta.elements.js2010/11/08 (Mon.) Trackback() Comment(0) JavaScript
Comments
Trackback
Trackback for this entry:
