Au lieu de rechercher fastidieusement des solutions de contournement pour chaque type d'attribut et d'événement lorsque vous utilisez la syntaxe suivante:
elem = document.createElement("div");
elem.id = 'myID';
elem.innerHTML = ' my Text '
document.body.insertBefore(elem,document.body.childNodes[0]);
Existe-t-il un moyen de déclarer simplement l'élément HTML entier sous forme de chaîne? comme:
elem = document.createElement("<div id='myID'> my Text </div>");
document.body.insertBefore(elem,document.body.childNodes[0]);
javascript
html
Le flash
la source
la source
Tu veux ça
la source
body
élément mais fonctionne bien sur n'importe quel autre élément.<body>
. En fait, l'exécuter<body>
est ma méthode standard pour injecter des éléments tels que des feuilles de style dans des pages Web via la console. Quel problème rencontrez-vous?<body>
n'étaient pas définies, tous les autres éléments le seraient aussi, donc ce n'est probablement pas le problème de Phill.Jetez un œil à insertAdjacentHTML
position est la position par rapport à l'élément que vous insérez à côté de:
'beforebegin' Avant l'élément lui-même
'afterbegin' Juste à l'intérieur de l'élément, avant son premier enfant
'beforeend' Juste à l'intérieur de l'élément, après son dernier enfant
'afterend' Après l'élément lui-même
la source
Dans le JavaScript old school, vous pouvez faire ceci:
En réponse à votre commentaire:
Vous devez cependant injecter le nouveau HTML dans le DOM; c'est pourquoi
innerHTML
est utilisé dans l'exemple JavaScript de la vieille école. LeinnerHTML
de l'BODY
élément est précédé du nouveau HTML. Nous ne touchons pas vraiment au HTML existant dans leBODY
.Je vais réécrire l'exemple ci-dessus pour clarifier ceci:
L'utilisation d'un framework JavaScript rendrait ce code beaucoup moins verbeux et améliorerait la lisibilité. Par exemple, jQuery vous permet d'effectuer les opérations suivantes:
la source
document.getElementsByTagName('body')[0]
peut en effet être remplacé pardocument.body
, bon point. Cependant, si vous souhaitez ajouter ou ajouter le nouveau HTML à un autre élément existant au lieu du BODY, vous devrez utiliserdocument.getElementById()
et / oudocument.getElementsByTagName()
; c'est pourquoi je l'ai utilisé dans l'exemple.À ma connaissance, ce qui, pour être honnête, est assez récent et limité, le seul problème potentiel avec cette technique est le fait que vous ne pouvez pas créer dynamiquement certains éléments de tableau.
J'utilise un formulaire pour créer des modèles en ajoutant des éléments "template" à un DIV caché puis en utilisant cloneNode (true) pour créer un clone et en l'ajoutant si nécessaire. Gardez à l'esprit que vous devez vous assurer de réattribuer les identifiants au besoin pour éviter la duplication.
la source
Comme d'autres l'ont dit, la fonctionnalité pratique de préfixe de jQuery peut être émulée:
Alors que certains disent qu'il vaut mieux ne pas "gâcher" avec innerHTML , c'est fiable dans de nombreux cas d'utilisation, si vous savez ceci:
https://developer.mozilla.org/en-US/docs/Web/API/Element/innerHTML
Ou:
insertAdjacentHTML
est probablement une bonne alternative: https://developer.mozilla.org/en-US/docs/Web/API/Element/insertAdjacentHTMLla source
Si vous souhaitez insérer du code HTML dans la balise de la page existante, utilisez Jnerator . Cet outil a été créé spécialement pour cet objectif.
Au lieu d'écrire le code suivant
Vous pouvez écrire une structure plus compréhensible
la source