D3.js - API การเลือก
การเลือกคือการแปลงข้อมูลที่มีประสิทธิภาพของรูปแบบวัตถุเอกสาร (DOM) ใช้เพื่อตั้งค่าแอตทริบิวต์ลักษณะคุณสมบัติ HTML หรือเนื้อหาข้อความและอื่น ๆ อีกมากมาย บทนี้จะอธิบายรายละเอียดเกี่ยวกับการเลือก API
การกำหนดค่า API
คุณสามารถกำหนดค่า API ได้โดยตรงโดยใช้สคริปต์ด้านล่าง
<script src = "https://d3js.org/d3-selection.v1.min.js"></script>
<script>
</script>
วิธีการเลือก API
ต่อไปนี้เป็นวิธีการที่สำคัญที่สุดในการเลือก API
- d3.selection()
- d3.select(selector)
- d3.selectAll(selector)
- selection.selectAll(selector)
- selection.filter(filter)
- selection.merge(other)
- d3.matcher(selector)
- d3.creator(name)
- selection.each(function)
- selection.call (ฟังก์ชัน [อาร์กิวเมนต์…])
- d3.local()
- local.set (โหนดค่า)
- local.get(node)
- local.remove(node)
ตอนนี้ให้เราคุยรายละเอียดแต่ละเรื่องเหล่านี้
d3.selection ()
วิธีนี้ใช้เพื่อเลือกองค์ประกอบราก ฟังก์ชั่นนี้ยังสามารถใช้เพื่อทดสอบการเลือกหรือเพื่อขยายการเลือก d3js
d3.select (ตัวเลือก)
วิธีนี้ใช้เพื่อเลือกองค์ประกอบแรกที่ตรงกับสตริงตัวเลือกที่ระบุ
Example - ให้เราพิจารณาตัวอย่างต่อไปนี้
var body = d3.select("body");
หากตัวเลือกไม่ใช่สตริงระบบจะเลือกโหนดที่ระบุซึ่งกำหนดไว้ด้านล่าง
d3.select("p").style("color", "red");
d3.selectAll (ตัวเลือก)
วิธีนี้จะเลือกองค์ประกอบทั้งหมดที่ตรงกับสตริงตัวเลือกที่ระบุ
Example - ให้เราพิจารณาตัวอย่างต่อไปนี้
var body = d3.selectAll("body");
หากตัวเลือกไม่ใช่สตริงระบบจะเลือกอาร์เรย์ของโหนดที่ระบุซึ่งกำหนดไว้ด้านล่าง
d3.selectAll("body").style("color", "red");
selection.selectAll (ตัวเลือก)
วิธีนี้ใช้เพื่อเลือกองค์ประกอบ มันเลือกองค์ประกอบที่สืบทอดที่ตรงกับสตริงตัวเลือกที่ระบุ องค์ประกอบในการเลือกที่ส่งคืนจะถูกจัดกลุ่มตามโหนดแม่ที่เกี่ยวข้องในการเลือกนี้ หากไม่มีองค์ประกอบที่ตรงกับตัวเลือกที่ระบุสำหรับองค์ประกอบปัจจุบันหรือหากตัวเลือกเป็นโมฆะกลุ่มที่ดัชนีปัจจุบันจะว่างเปล่า
Example - ให้เราพิจารณาตัวอย่างต่อไปนี้
var b = d3.selectAll("p").selectAll("b");
selection.filter (ตัวกรอง)
วิธีนี้ใช้เพื่อกรองการเลือกโดยส่งคืนการเลือกใหม่ที่มีเฉพาะองค์ประกอบที่ตัวกรองที่ระบุเป็นจริง
Example - ให้เราพิจารณาตัวอย่างต่อไปนี้
var even = d3.selectAll("tr").filter(":nth-child(odd)");
ที่นี่กรองแถวตารางที่เลือกจะส่งกลับค่าคี่เท่านั้น
selection.merge (อื่น ๆ )
วิธีนี้ใช้เพื่อส่งคืนการเลือกใหม่ที่ผสานกับการเลือกอื่น ๆ ที่ระบุ
Example - ให้เราพิจารณาตัวอย่างต่อไปนี้
var rect = svg.selectAll("rect").data(data);
rect.enter().append("rect").merge(rect);
d3.matcher (ตัวเลือก)
วิธีนี้ใช้เพื่อกำหนดตัวเลือกที่ระบุ ส่งคืนฟังก์ชันซึ่งส่งคืนจริง
Example - ให้เราพิจารณาตัวอย่างต่อไปนี้
var p = selection.filter(d3.matcher("p"));
d3.creator (ชื่อ)
วิธีนี้ใช้เพื่อกำหนดชื่อองค์ประกอบที่ระบุมันส่งคืนฟังก์ชันซึ่งสร้างองค์ประกอบของชื่อที่กำหนดโดยสมมติว่าเป็นองค์ประกอบหลัก
Example - ให้เราพิจารณาตัวอย่างต่อไปนี้
selection.append(d3.creator("p"));
การเลือกแต่ละ (ฟังก์ชัน)
วิธีนี้ใช้เพื่อเรียกใช้ฟังก์ชันที่ระบุสำหรับแต่ละองค์ประกอบที่เลือกตามลำดับที่ส่งผ่านโดยข้อมูลปัจจุบัน (d) ดัชนีปัจจุบัน (i) และกลุ่มปัจจุบัน (โหนด) โดยมีสิ่งนี้เป็นองค์ประกอบ DOM ปัจจุบัน (โหนด [i ]). มีคำอธิบายด้านล่าง
parent.each(function(p, j) {
d3.select(this)
.selectAll(".child")
.text(function(d, i) { return "child " + d.name + " of " + p.name; });
});
selection.call (ฟังก์ชัน [อาร์กิวเมนต์…])
ใช้เพื่อเรียกใช้ฟังก์ชันที่ระบุเพียงครั้งเดียว ไวยากรณ์ดังแสดงด้านล่าง
function name(selection, first, last) {
selection.attr("first-name", first).attr("last-name", last);
}
วิธีนี้สามารถระบุได้ดังภาพด้านล่าง
d3.selectAll("p").call(name, "Adam", "David");
d3.local ()
D3 local ช่วยให้คุณสามารถกำหนดสถานะท้องถิ่นที่ไม่ขึ้นกับข้อมูล
Example - ให้เราพิจารณาตัวอย่างต่อไปนี้
var data = d3.local();
ซึ่งแตกต่างจาก var ค่าของแต่ละท้องถิ่นจะถูกกำหนดโดย DOM ด้วย
local.set (โหนดค่า)
วิธีนี้ตั้งค่าของโลคัลนี้บนโหนดที่ระบุเป็นค่า
Example - ให้เราพิจารณาตัวอย่างต่อไปนี้
selection.each(function(d)
{ data.set(this, d.value); });
local.get(node)
วิธีนี้ส่งคืนค่าของโลคัลนี้บนโหนดที่ระบุ หากโหนดไม่ได้กำหนดโลคัลนี้จะส่งคืนค่าจากบรรพบุรุษที่ใกล้ที่สุดที่กำหนด
local.remove (โหนด)
วิธีนี้จะลบค่าของโลคัลนี้ออกจากโหนดที่ระบุ จะคืนค่าจริงถ้าโหนดกำหนดไว้มิฉะนั้นจะส่งคืนเท็จ