En aquest tema, aprendrem com seleccionar elements del Document Object Model (DOM) utilitzant D3.js. La selecció d'elements és una de les operacions més bàsiques i fonamentals en D3.js, ja que ens permet manipular i interactuar amb els elements HTML de la nostra pàgina web.

Conceptes Clau

Abans de començar amb els exemples pràctics, és important entendre alguns conceptes clau:

  • Selecció: En D3.js, una selecció és un conjunt d'elements DOM que podem manipular.
  • Metodes de Selecció: D3.js proporciona diversos mètodes per seleccionar elements, com d3.select() i d3.selectAll().
  • Encadenament: D3.js permet encadenar múltiples operacions en una selecció, facilitant la manipulació d'elements de manera eficient.

Seleccionant un Element Únic

Per seleccionar un únic element del DOM, utilitzem el mètode d3.select(). Aquest mètode accepta un selector CSS com a argument i retorna el primer element que coincideix amb aquest selector.

Exemple

<!DOCTYPE html>
<html lang="ca">
<head>
    <meta charset="UTF-8">
    <title>Selecció d'Element Únic</title>
</head>
<body>
    <h1 id="title">Hola, D3.js!</h1>
    <script src="https://d3js.org/d3.v7.min.js"></script>
    <script>
        // Seleccionem l'element amb id "title"
        var title = d3.select("#title");
        
        // Canviem el text de l'element seleccionat
        title.text("Benvingut a D3.js!");
    </script>
</body>
</html>

Explicació

  1. HTML: Tenim un element <h1> amb l'id "title".
  2. JavaScript: Utilitzem d3.select("#title") per seleccionar l'element <h1>.
  3. Manipulació: Utilitzem el mètode .text() per canviar el text de l'element seleccionat.

Seleccionant Múltiples Elements

Per seleccionar múltiples elements del DOM, utilitzem el mètode d3.selectAll(). Aquest mètode accepta un selector CSS com a argument i retorna tots els elements que coincideixen amb aquest selector.

Exemple

<!DOCTYPE html>
<html lang="ca">
<head>
    <meta charset="UTF-8">
    <title>Selecció de Múltiples Elements</title>
</head>
<body>
    <ul>
        <li>Element 1</li>
        <li>Element 2</li>
        <li>Element 3</li>
    </ul>
    <script src="https://d3js.org/d3.v7.min.js"></script>
    <script>
        // Seleccionem tots els elements <li>
        var items = d3.selectAll("li");
        
        // Canviem el text de cada element seleccionat
        items.text(function(d, i) {
            return "Element " + (i + 1) + " actualitzat";
        });
    </script>
</body>
</html>

Explicació

  1. HTML: Tenim una llista no ordenada amb tres elements <li>.
  2. JavaScript: Utilitzem d3.selectAll("li") per seleccionar tots els elements <li>.
  3. Manipulació: Utilitzem el mètode .text() amb una funció de retorn per actualitzar el text de cada element seleccionat. La funció rep dos arguments: d (dada associada) i i (índex de l'element).

Encadenament de Mètodes

D3.js permet encadenar múltiples mètodes en una selecció per realitzar diverses operacions de manera eficient.

Exemple

<!DOCTYPE html>
<html lang="ca">
<head>
    <meta charset="UTF-8">
    <title>Encadenament de Mètodes</title>
</head>
<body>
    <p class="text">Paràgraf 1</p>
    <p class="text">Paràgraf 2</p>
    <p class="text">Paràgraf 3</p>
    <script src="https://d3js.org/d3.v7.min.js"></script>
    <script>
        // Seleccionem tots els elements <p> amb la classe "text"
        d3.selectAll("p.text")
            .style("color", "blue")  // Canviem el color del text
            .style("font-size", "20px")  // Canviem la mida de la font
            .text("Text actualitzat");  // Canviem el text
    </script>
</body>
</html>

Explicació

  1. HTML: Tenim tres elements <p> amb la classe "text".
  2. JavaScript: Utilitzem d3.selectAll("p.text") per seleccionar tots els elements <p> amb la classe "text".
  3. Encadenament: Utilitzem .style() per canviar el color i la mida de la font, i .text() per actualitzar el text de cada element seleccionat.

Exercicis Pràctics

Exercici 1

Descripció: Selecciona tots els elements <div> amb la classe "box" i canvia el seu color de fons a "lightblue".

Codi Inicial:

<!DOCTYPE html>
<html lang="ca">
<head>
    <meta charset="UTF-8">
    <title>Exercici 1</title>
</head>
<body>
    <div class="box">Caixa 1</div>
    <div class="box">Caixa 2</div>
    <div class="box">Caixa 3</div>
    <script src="https://d3js.org/d3.v7.min.js"></script>
    <script>
        // Escriu el teu codi aquí
    </script>
</body>
</html>

Solució:

<script>
    d3.selectAll("div.box")
        .style("background-color", "lightblue");
</script>

Exercici 2

Descripció: Selecciona l'element <h2> amb l'id "subtitle" i canvia el seu text a "Subtítol Actualitzat".

Codi Inicial:

<!DOCTYPE html>
<html lang="ca">
<head>
    <meta charset="UTF-8">
    <title>Exercici 2</title>
</head>
<body>
    <h2 id="subtitle">Subtítol Original</h2>
    <script src="https://d3js.org/d3.v7.min.js"></script>
    <script>
        // Escriu el teu codi aquí
    </script>
</body>
</html>

Solució:

<script>
    d3.select("#subtitle")
        .text("Subtítol Actualitzat");
</script>

Conclusió

En aquesta secció, hem après com seleccionar elements del DOM utilitzant D3.js. Hem vist com seleccionar un únic element amb d3.select(), com seleccionar múltiples elements amb d3.selectAll(), i com encadenar mètodes per realitzar múltiples operacions de manera eficient. Aquests conceptes són fonamentals per treballar amb D3.js i ens permetran manipular i interactuar amb els elements HTML de les nostres visualitzacions.

En el següent tema, explorarem com modificar els elements seleccionats per personalitzar les nostres visualitzacions.

D3.js: De Principiant a Avançat

Mòdul 1: Introducció a D3.js

Mòdul 2: Treballant amb Seleccions

Mòdul 3: Dades i Escales

Mòdul 4: Creant Visualitzacions Bàsiques

Mòdul 5: Visualitzacions Avançades

Mòdul 6: Interactivitat i Animació

Mòdul 7: Treballant amb Dades Reals

Mòdul 8: Rendiment i Optimització

Mòdul 9: Millors Pràctiques i Tècniques Avançades

Mòdul 10: Projecte Final

© Copyright 2024. Tots els drets reservats