HTML DOM


  行追加



行追加をする場合、TR の子要素である TD が多い場合、全てを新規作成するのは面倒なので既存行の
クローンを作成して追加する方法が良いと思います。
( ※ コンボボックスの処理を参照 : cloneNode )

  
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=Shift_JIS">
<SCRIPT language="javascript" type="text/javascript">

function AddRow() {

	var i,j,objNode,objNodeList,nLength,objResult;

	// 結果表示用 DIV
	objResult = document.getElementById( "result" );
	// 対象テーブル
	objNode = document.getElementById( "target" );

	// 対象テーブル内の TR ノード
	objNodeList = objNode.getElementsByTagName( "TR" );

	// 行数
	nLength = objNodeList.length;

	// 一行目のクローンを作成 ( TH があるので、最初の行は 1 )
	var cloneNode = objNodeList.item(1).cloneNode( true );
	// クローンノードの設定
	var nodeTDList = cloneNode.getElementsByTagName( "TD" );
	nodeTDList.item( 0 ).firstChild.nodeValue = "[0001]";
	nodeTDList.item( 1 ).style.cssText = "font-weight: bold";
	// 個別設定
//	nodeTDList.item( 1 ).style.fontWeight = "bold";
	nodeTDList.item( 2 ).setAttribute("align", "right");

	// 2行目の前に追加
	// insertBefore を実行する為に、TR ノードの親ノードを取得
	var parentNode = objNodeList.item(1).parentNode;
	parentNode.insertBefore( cloneNode, objNodeList[2] );

	alert( parentNode.nodeName );
	// 以下でも同様
//	var parentNode = objNode.getElementsByTagName( "TBODY" )[0];
//	parentNode.insertBefore( cloneNode, objNodeList[2] );

}

</SCRIPT>
</HEAD>
<BODY>

<INPUT type=button value="追加" onClick='AddRow()'>

<TABLE id="target">
<TR>
	<TH>コード</TH>
	<TH>名称</TH>
	<TH>数値</TH>
</TR>
<TR>
	<TD>0001</TD>
	<TD>名称1</TD>
	<TD>100</TD>
</TR>
<TR>
	<TD>0002</TD>
	<TD>名称2</TD>
	<TD>200</TD>
</TR>
<TR>
	<TD>0003</TD>
	<TD>名称3</TD>
	<TD>300</TD>
</TR>
</TABLE>

</BODY>
</HTML>
  










  infoboard   管理者用   
このエントリーをはてなブックマークに追加





フリーフォントWEBサービス
SQLの窓WEBサービス

SQLの窓フリーソフト

素材

一般WEBツールリンク

SQLの窓

フリーソフト

JSライブラリ