Copie todos los atributos de un elemento y aplíquelos a otro con JavaScript

La tarea es copiar todos los atributos de un elemento y aplicarlos a otro con la ayuda de javaScript. Aquí se discuten 2 enfoques.

Enfoque 1: 

  • Seleccione ambos elementos (objetivo y elemento de origen).
  • Obtenga las propiedades del elemento fuente utilizando el método el.prop(‘attributes’) .
  • Use el método .each() en cada propiedad de objeto y establezca esa propiedad en el elemento de destino usando el método .attr() .

Ejemplo 1: Este ejemplo implementa el enfoque anterior.  

HTML

<!DOCTYPE HTML>
<html>
 
<head>
    <title>
        Copy all the attributes of one element
      and apply them to another with JavaScript.
    </title>
    <script src=
"https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js">
    </script>
</head>
 
<body style="text-align:center;">
    <h1 style="color:green;"> 
            GeeksForGeeks 
        </h1>
    <p id="GFG_UP">
    </p>
 
 
    <div id="el1" style="background: green;">
        Element 1
    </div>
    <br>
    <div id="el2">
        Element 2
    </div>
    <br>
    <button onclick="GFG_Fun()">
        click here
    </button>
    <p id="GFG_DOWN" style="color: green;">
    </p>
 
 
    <script>
        var up = document.getElementById('GFG_UP');
        var down = document.getElementById('GFG_DOWN');
        up.innerHTML =
"Click on the button to copy all the attributes of one "+
          "element and apply them to another.";
 
        function GFG_Fun() {
            var $el1 = $("#el1");
            var $el2 = $("#el2");
            var attrbts = $el1.prop("attributes");
            // loop through element1 attributes and apply them on element2.
            $.each(attrbts, function() {
                $el2.attr(this.name, this.value);
            });
            down.innerHTML =
              "All Attributes of Element 1 are copied to element 2.";
        }
    </script>
</body>
 
</html>

Producción: 

  • Antes de hacer clic en el botón:

  • Después de hacer clic en el botón:

Enfoque 2:  

  • Seleccione ambos elementos (objetivo y elemento de origen).
  • Obtenga las propiedades del elemento fuente utilizando la propiedad el.attributes .
  • Use el método .forEach() en cada propiedad y establezca esa propiedad en el elemento de destino usando el método .setAttribute() .

Ejemplo 2: Este ejemplo implementa el enfoque anterior. 

HTML

<!DOCTYPE HTML>
<html>
 
<head>
    <title>
        Copy all the attributes of one element
      and apply them to another with JavaScript.
    </title>
    <script src=
"https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js">
    </script>
</head>
 
<body style="text-align:center;">
    <h1 style="color:green;"> 
            GeeksForGeeks 
        </h1>
    <p id="GFG_UP">
    </p>
 
 
    <div id="el1" style="background: green;
                color: white; font-size: 26px;">
        Element 1
    </div>
    <br>
    <div id="el2">
        Element 2
    </div>
    <br>
    <button onclick="GFG_Fun()">
        click here
    </button>
    <p id="GFG_DOWN" style="color: green;">
    </p>
 
 
    <script>
        var up = document.getElementById('GFG_UP');
        var down = document.getElementById('GFG_DOWN');
        up.innerHTML =
"Click on the button to copy all the attributes of one element"+
        " and apply them to another.";
 
        function copyAttrs(target, source) {
            [...source.attributes].forEach(attr => {
                target.setAttribute(attr.nodeName, attr.nodeValue)
            })
        }
 
        function GFG_Fun() {
            var el1 = document.getElementById("el1");
            var el2 = document.getElementById("el2");
            copyAttrs(el2, el1);
            down.innerHTML =
              "All Attributes of Element 1 are copied to element 2.";
        }
    </script>
</body>
 
</html>

Producción: 

  • Antes de hacer clic en el botón:

  • Después de hacer clic en el botón:

Publicación traducida automáticamente

Artículo escrito por PranchalKatiyar y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *