با عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرن ، انتخاب یکی از مفاهیم اصلی در زبان D3.js می باشد که برپایه انتخابگرهای CSS است. انتخاب در D3.js این اجازه را به ما می دهد که یک یا چند عنصر را در یک صفحه وب انتخاب کنیم. علاوه بر این، می توانیم در ارتباط با مجموعه داده های از پیش تعریف شده، آنها را تغییر، افزودن یا حذف کنیم. در این فصل، نحوه استفاده از انتخاب ها برای ایجاد نمایش داده ها(data visualizations) و انتخابگرهای D3.js را خواهیم دید. همچنین متد ()append و متد ()selectAll آشنا خواهید شد.
D3.js برای انتخاب عناصر از صفحه HTML دو روش دارد:
تنها یک عنصر DOM رامطابق با انتخابگر CSS داده شده انتخاب می کند. همچنین اگر بیش از یک عنصر برای انتخابگر CSS داده شده وجود داشته باشد، تنها اولین مورد را انتخاب می کند.
همه عناصر DOM را مطابق با انتخابگر CSS داده شده انتخاب می کند. اگر شما با انتخاب عناصر در jQuery آشنا هستید، انتخابگرهای D3.js تقریبا مشابه آن ها هستند.
اکنون به هر کدام از متد ها با جزییات می پردازیم.
عنصر HTML را براساس انتخابگرهای CSS انتخاب می کند. در CSS Selectors، می توانید عناصر HTML را به سه صورت تعریف و به آنها دسترسی داشته باشید:
اجازه دهید مفهوم را با ذکر مثال روشن تر کنیم.
شما می توانید عناصر HTML را با استفاده از TAG خود انتخاب کنید. دستورالعمل زیر برای انتخاب عناصر تگ div استفاده می شود :
1 | d3.select(“div”) |
مثال: صفحه “select_by_tag.html” را ایجاد کرده و تغییرات زیر را اضافه کنید :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <!DOCTYPE html> <html> <head> <script type = "text/javascript" src = "https://d3js.org/d3.v4.min.js"></script> </head> <body> <div> Hello World! </div> <script> alert(d3.select("div").text()); </script> </body> </html> |
هنگام اجرای صفحه وب از طریق مرورگر، خروجی زیر را روی صفحه نمایش خواهید دید :
1 | Hello World! |
عناصر HTML را با استفاده از نلم کلاس CSS توسط دستور زیر می توان انتخاب کرد.
1 | d3.select(“.<class name>”) |
یک صفحه وب “select_by_class.html” را ایجاد کنید و تغییرات زیر را اعمال نمایید :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <!DOCTYPE html> <html> <head> <script type = "text/javascript" src = "https://d3js.org/d3.v4.min.js"></script> </head> <body> <div class = "myclass"> Hello World! </div> <script> alert(d3.select(".myclass").text()); </script> </body> </html> |
هنگامی که بخواهید صفحه ایجاد شده را در مرورگر باز کنید خروجی زیر نشان داده می شود :
1 | Hello World! |
هر عنصر در یک صفحه HTML باید یک شناسه منحصر به فرد داشته باشد. ما می توانیم از این شناسه ی منحصر به فرد به عنوان عنصر برای دسترسی به آن با استفاده از روش select () استفاده کنیم.
1 | d3.select(“#<id of an element>”) |
یک صفحه وب “select_by_id.html” ساخته و تغییرات زیر را اضافه کنید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <!DOCTYPE html> <html> <head> <script type = "text/javascript" src = "https://d3js.org/d3.v4.min.js"></script> </head> <body> <div id = "hello"> Hello World! </div> <script> alert(d3.select("#hello").text()); </script> </body> </html> |
با درخواست صفحه وب از طریق مرورگر، خروجی زیر را روی صفحه نمایش خواهید دید.
1 | Hello World! |
انتخاب در D3.js ، متدهای ()append و ()text را برای اضافه کردن عناصر جدید به اسناد HTML موجود را فراهم می کند. در این بخش در مورد اضافه کردن عناصر DOM با جزئیات توضیح داده شده است.
متد ()append یک عنصر جدید را به عنوان آخرین فرزند عنصر در انتخاب فعلی اضافه می کند. این متد همچنین می تواند سبک عناصر، ویژگی ها، خواص، محتوای HTML و متن را تغییر دهد.
یک صفحه وب “select_and_append.html” را ایجاد کرده و تغییرات زیر را اعمال کنید :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <!DOCTYPE html> <html> <head> <script type = "text/javascript" src = "https://d3js.org/d3.v4.min.js"></script> </head> <body> <div class = "myclass"> Hello World! </div> <script> d3.select("div.myclass").append("span"); </script> </body> </html> |
بعد از باز کردن صفحه در مرورگر خروجی زیر ایجاد می شود.
1 | Hello World! |
در این مثال، متد ()append محدوده تگ جدید را در داخل تگ div مانند زیر نشان می دهد :
1 2 3 | <div class = "myclass"> Hello World!<span></span> </div> |
برای تنظیم محتوای عناصر انتخاب شده / اضافه شده استفاده می شود. اجازه دهید ما مثال فوق را تغییر دهیم و کاربرد متد ()text را در زیر نشان بدهیم.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <!DOCTYPE html> <html> <head> <script type = "text/javascript" src = "https://d3js.org/d3.v4.min.js"></script> </head> <body> <div class = "myclass"> Hello World! </div> <script> d3.select("div.myclass").append("span").text("from D3.js"); </script> </body> </html> |
اکنون صفحه را مجدد لود کنید خروجی زیر به شما نمایش داده می شود :
1 | Hello World! from D3.js |
اسکریپت فوق عملیات زنجیره ای انجام می دهد. D3.js هوشمندانه تکنیکی به نام سینتکس زنجیره ای که ممکن است jQuery آن را شناسایی کند استفاده می کند. با استفاده از متدهای زنجیره ای همراه با دوره ها، می توانید چندین اقدام را در یک خط کد انجام دهید. این عمل سریع و آسان است. همچنین همان اسکریپت می تواند بدون سینتکس زنجیره ای مانند زیر نشان داده شود.
1 2 3 | var body = d3.select("div.myclass"); var span = body.append("span"); span.text("from D3.js"); |
D3.js متدهای متفاوتی را برای تغییر محتوا و سبک عناصر انتخاب شده فراهم می کند از جمله این متدها میتوان به ()html()،attr و() style اشاره نمود.
بگذارید ببینیم چگونه از متد های اصلاح در این فصل استفاده کنیم.
این متد برای تنظیم محتوای HTML از عناصر انتخاب شده / اضافه شده استفاده می شود.
یک صفحه وب “select_and_add_html.html” ایجاد کنید و کد زیر را اضافه کنید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <!DOCTYPE html> <html> <head> <script type = "text/javascript" src = "https://d3js.org/d3.v4.min.js"></script> </head> <body> <div class = "myclass"> Hello World! </div> <script> d3.select(".myclass").html("Hello World! <span>from D3.js</span>"); </script> </body> </html> |
با باز نمودن این صفحه در مرورگر، نتیجه زیر نمایش داده می شود :
1 | Hello World! from D3.js |
متد ()attr برای افزودن یا به روزرسانی صفات عناصر انتخاب شده مورد استفاده قرار می گیرد. برای درک بهتر یک صفحه وب “select_and_modify.html” را ایجاد کنید و کد زیر را اضافه نمایید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <!DOCTYPE html> <html> <head> <script type = "text/javascript" src = "https://d3js.org/d3.v4.min.js"></script> </head> <body> <div class = "myclass"> Hello World! </div> <script> d3.select(".myclass").attr("style", "color: red"); </script> </body> </html> |
با درخواست صفحه وب از طریق مرورگر، خروجی زیر را روی صفحه نمایش خواهید دید :
1 | Hello World! |
این متد برای تعیین ویژگی سبک عناصر انتخاب شده استفاده می شود. یک صفحه وب “select_and_style.html” ایجاد کنید و کد زیر را اضافه کنید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <!DOCTYPE html> <html> <head> <script type = "text/javascript" src = "https://d3js.org/d3.v4.min.js"></script> </head> <body> <div class = "myclass"> Hello World! </div> <script> d3.select(".myclass").style("color", "red"); </script> </body> </html> |
با درخواست صفحه وب از طریق مرورگر، خروجی زیر را روی صفحه نمایش خواهید دید :
1 | Hello World! |
متد ()classed به طور انحصاری برای تعیین ویژگی “class” یک عنصر HTML استفاده می شود. از آنجا که یک عنصر HTML تنها می تواند چندین کلاس داشته باشد؛ ما باید هنگام اختصاص کلاس به عنصر HTML مراقب باشیم. این متد می داند چگونه یک یا چند کلاس را بر عناصر اداره کند و آن را اجرا کند.
1 | d3.select(".myclass").classed("myanotherclass", true); |
1 | d3.select(".myclass").classed("myanotherclass", false); |
1 | d3.select(".myclass").classed("myanotherclass"); |
1 2 | var element = d3.select(".myclass") element.classed("myanotherclass", !oneBar.classed("myanotherclass")); |
متد ()selectAll برای انتخاب چندین عنصر در سند HTML استفاده می شود. متد select اولین عنصر را انتخاب می کند، اما روش selectAll تمام عناصری را که با رشته انتخاب خاص مطابقت دارند، انتخاب می کند..اگر هیچ انتخابی مطابقت نداشته باشد، انتخاب را خالی باز می گرداند. در متد ()selectAll ما می توانیم تمام متدهای اصلاح و یا افزودنی مانند :append() html ()، text ()، attr ()، style ()، class ، و… را استفاده کنیم. در متد ()selectAll، متد ها بر تمام عناصر تطبیق شده تاثیر می گذارند.
با ایجاد یک صفحه وب جدید “select_multiple.html” مفهوم را بهتر می فهمیم.صفحه را ایجاد و اسکریپت زیر را اضافه کنید :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <!DOCTYPE html> <html> <head> <script type = "text/javascript" src = "https://d3js.org/d3.v4.min.js"></script> </head> <body> <h2 class = "myclass">Message</h2> <div class = "myclass"> Hello World! </div> <script> d3.selectAll(".myclass").attr("style", "color: red"); </script> </body> </html> |
با درخواست صفحه وب از طریق مرورگر، خروجی زیر را روی صفحه نمایش خواهید دید.
1 2 | Message Hello World! |
در اینجا، متد ()attr برای هر دو تگ div و h2 اعمال می شود و رنگ متن در هر دو تگ به قرمز تغییر می کند.
با مفهوم انتخاب در D3.js آشنا شدید و کارکرد متدهایی مانند : متد ()append ، متد ()selectAll و … را نیز فرا گرفتید.امیدوارم از طالب ذکر شده بهره مند شده باشید.