はじめに
d3.jsは、セレクタでタグを選択し、操作を行う。
バージョン3.xでのd3の選択、操作をjQuery, javascriptと共にまとめます。
d3.jsセレクタ
d3.jsはselect(単一), selectAll(複数)でタグを選択する。
selectで対象が複数ある場合は、1コ目の要素が選択される。
| セレクタ | d3 | jQuery | javascript |
|---|---|---|---|
| タグ指定 | d3.select("p"); d3.selectAll("p"); | $("p"); | document.getElementsByTagName("p"); |
| id指定 | d3.select("#id"); | $("#id"); | document.getElementById("id"); |
| クラス指定 | d3.select(".cls"); d3.selectAll(".cls"); | $(".cls"); | document.getElementsByClassName("cls"); |
セレクタに続いてセレクタを記述し、さらに要素を特定できる。
d3.select("#id").selectAll("p");
タグ操作
セレクタに続いて記述する。
| 操作 | d3 | jQuery | javascript |
|---|---|---|---|
| 属性取得 | selection.attr("id"); | selection.attr("id"); | selection.getAttribute("id"); |
| 属性追加 | selection.attr("id", "name"); | selection.attr("id", "name"); | selection.attrAttribute("id", "name"); |
| 属性削除 | selection.attr("id", null); | selection.removeAttr("id"); | selection.removeAttribute("id"); |
| クラス追加 | selection.classed("cls", true); | selection.addClass("cls"); | selection.classList.add("cls"); |
| クラス削除 | selection.classed("cls", false); | selection.removeClass("cls"); | selection.classList.remove("cls"); |
| スタイル取得 | selection.style("color"); | selection.css("color"); | selection.style.color; |
| スタイル設定 | selection.style("color", "blue"); | selection.css("color", "blue"); | selection.style.color = "blue"; |
| スタイル削除 | selection.style("color", null); | selection.css("color", ""); | selection.style.color = ""; |
| プロパティ値取得 | selection.property("checked"); | selection.prop("checked"); | selection.checked; |
| プロパティ値設定 | selection.property("checked", true); | selection.prop("checked", true); | selection.checked = true; |
| html取得 | selection.html(); | selection.html(); | selection.innerHTML; |
| html設定 | selection.html("<p>value</p>"); | selection.html("<p>value</p>"); | selection.innerHTML = "<p>value</p>"; |
| 要素追加 | selection.append("p"); | selection.append("<p></p>"); | selection.appendChild(document.createElement('div')); |
| 要素削除 | selection.remove(); | selection.remove(); | selection.parentNode.removeChild(selection); |
dataとenterとexit
dataはセレクタで選択した要素と配列の値(dataset)を関連付ける。
enterは、要素よりdatasetが多い場合、余剰分のdatasetの選択を返す。
var dataset = [...];
selection.data(dataset).enter();
exitは、datasetより要素が多い場合、余剰分の要素の選択を返す。
var dataset = [...];
selection.data(dataset).exit();
enterとexitの両方を使ってみました。
enterとexitの利用例