selection.insert - 要素を挿入する
投稿日: / 更新日:
d3.jsのselection.insert()
は、指定された位置に要素を挿入するためのAPIです。
サンプルコード
<ul>
<li>1つ目のLI</li>
<li>2つ目のLI</li>
<li>3つ目のLI</li>
<li>4つ目のLI</li>
<li>5つ目のLI</li>
</ul>
// ul要素を選択
var selection = d3.select( "ul" ) ;
// 1番最後に新しいli要素を挿入 (第2引数なし)
selection.insert( "li" ) ;
// 4番目のli要素の前に新しいli要素を挿入 (第2引数あり)
selection.insert( "li", ":nth-child(4)" ) ;
// 4番目のli要素の前に新しいli要素を挿入 (第1引数を関数で指定)
selection.insert( function() {
var liElement = document.createElement( "li" ) ;
return liElement ;
}, ":nth-child(4)" ) ;
デモ
構文
selection = selection.insert( string || function [, before] )
項目 | 説明 |
---|---|
string | 第1引数に追加したい要素のタグ名を文字列で指定する。指定したタグ名の要素が新しく生成(createElement )される。名前空間を指定する場合、ns:tag とプレフィクスを付けて指定する。svg 、xhtml 、xlink 、xml 、xmlns に関しては、プレフィクスを指定しなくても認識される。 |
function | 第1引数に関数を指定すると、戻り値を値として指定できる。この関数は、直前でdata() を利用した場合、第1引数で配列の値、第2引数でインデックス番号を受け取る。関数の戻り値は、タグ名を表す文字列ではなく、要素(ノード)でなければいけない。 |
before | 省略可。省略時は一番最後に挿入される(append() と同じ)。第2引数で挿入する位置を指定できる。対象要素の子要素の番号を、CSSの擬似セレクタ(:first-child 、:nth-child(4) など)で指定する。ここで指定した位置の直前に、要素が挿入される。誤って存在しない位置を指定してしまった場合、第2引数を省略した時と同様に一番最後に挿入される。 |
項目 | 説明 |
---|---|
selection | 引数を指定してHTMLを変更した場合は、d3.selectionオブジェクトが戻り値となる。 |
ノート
- 文字列ならタグ名
- 第1引数が文字列なら、そのタグ名を指定する。
- 関数なら要素
- 第1引数が関数なら、戻り値が要素(ノード)になるようにして指定する。
- 省略したらappend
- 第2引数を省略した場合、
append()
と同じで一番最後に追加される。 - 間違えたらappend
- 無効な位置を指定してしまった場合も、
append()
と同じで一番最後に追加される。