Voici mon code d'essais et il fonctionne bien (simplifié avec un seul attribut data-xxx )
var new_section = document.createElement("div");
new_section.id = add_sector;
new_section.className = "sections";
document.getElementById("global").appendChild(new_section);
var new_section = document.createElement("p");
new_section.className = "titre";
new_section.textContent = "New section";
document.getElementById(add_sector).appendChild(new_section);
// ** Champ INPUT avec attribut data **
var ajouter = document.createElement("input");
ajouter.id = add_foo;
// Les attributs Datat-
ajouter.data = "data-clipboard-action = copy";
ajouter.className = "param btn";
ajouter.value = "Salut";
document.getElementById(add_sector).appendChild(ajouter);
Mais mes attributs datane sont pas pris en compte, aucune erreur de la part du navigateur mais ils n'apparaissent pas dans l'inspecteur d'éléments :
Ce serait facile à faire avec jQuery, mais la il me manque la bonne pratique, chose que je n'arrive pas à trouver sur le web (et même sur stack overflow)
Notez que même le value du champs INPUT est lui aussi absent...
Si quelqu'un peut me dire ce qu'il manque pour injecter mes attributs data, je lui en serait très reconnaissante
- Edité par pipelette13 21 octobre 2017 à 11:33:31
Dans ton cas, étant donné que tous les éléments HTML inplémentent un identifiant, tu peux utiliser l'accès par attribut ou bien par méthode.
Par contre, si l'élément HTML est une div, est que tu souhaites lui donner un attribut name, tu ne pourras pas le faire avec l'accès par attribut puisqu'une div n'implémente pas l'attribut name, seuls les HTMLElementInput et autres éléments similaire l'implémente.
Donc ton code ne plantera pas, mais rien ne se passera. Et si vraiment tu souhaite forcer ce comportement, tu n'auras pas d'autre choix que d'utiliser l'accès par méthode.
"use strict";
var div = document.querySelector("div");
div.name = "test"; // ne modifie pas le DOM
div.setAttribute("name", "test"); // modifie le DOM et ajoute l'attribut "name" à la div
var input = document.querySelector("input");
input.name = "test"; // fonctionne
input.setAttribute("name", "test"); // fonctionne aussi
- Edité par Walter O'Brien 21 octobre 2017 à 19:23:39
Et bien merci pour toutes ces précisions, je vais pouvoir continuer à rédiger mon CDC et commencer mon projet puisque tous mes scripts d'essais sont fonctionnels (celui-ci était la dernière chose à rendre fonctionnelle, bien que je risque d'en rencontrer d'autre pendant la phase de Dev)
C'est une habitude, ça aide à afficher certains messages d'erreurs par exemple si je déclare une variable en oubliant le mot-clé var (alors que c'est autorisé en mode non-strict et ne déclenche pas d'erreur).
Il y a toute une page de la documentation MDN qui explique tout cela.
Bon dimanche à toi et bon courage pour ton projet.
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.