J'essayais de changer d'itétizotage de l'innerhtml d'un identifiant, comme: et p> mais j'ai trouvé que ça n'a pas fait 't nécessairement mettre mes tags en séquence. p> Bien sûr, cette méthode est nulle et je viens de changer tout pour continuer à ajouter à une chaîne, que j'ignore à la fin de l'ID. p> Ma question est la suivante: p> Qu'est-ce que l'innerhtml est exactement dans les tags que je l'insère, est-ce déterministe, est-il spécifique à la courroi? strower P> p>
5 Réponses :
innerhtml ne fait rien, mais le navigateur est libre de changer de choses autour, mais elle aime. Vous pouvez voir cela se produire si vous ouvrez une page dans Firefox et ouvrez Firebug avec elle. Lorsque vous affichez votre HTML, vous trouverez peut-être que certains éléments ne sont même plus là. P>
L'action la plus surprenante de Firefox, à un nouveau venu, est de changer tout HTML sur ce qui semble être XHTML. P>
sur votre méthode, je ne pense pas que cela craint du tout. Je pense que c'est assez cool, en fait. Donc merci! p>
et avoir un uppot pour cela: -) p>
La raison pour laquelle ce n'est pas une bonne méthode en dehors de la question que j'ai soulevée, c'est qu'il est plus lent que le navigateur de traiter, d'une attribution à l'innerhtml.
@Lance Roberts - Je vois. Eh bien, ça fait un sens parfait. Et bien sûr, lorsque vous calculez "plus lent", vous incluez le temps nécessaire pour obtenir l'innerhtml hors de l'élément et dans un var; En chattant les nouvelles choses - "
" dans votre exemple - sur la fin de ce var; et stocker le Var retour dans le HTML. Peut-il vraiment être vrai? Le navigateur est un vrai chien - un bowser - si oui.
Bien que innerhtml code> soit non strong> partie du W3C DOM, il est pris en charge par tous les navigateurs. À l'origine, il vient d'ajouter la chaîne as-it-is em> à votre élément. Tous les grands navigateurs modifient cependant votre chaîne et rendez la chaîne un balisage HTML valide. Ceci est un navigateur spécifique et
innerhtml code> est spécifié dans HTML5: w3.org/tr/2008/wd-html5-20080610/dom.html#innerhtml0
Dans mon expérience la plupart du temps, un navigateur tente de corriger le HTML 1 b> sup> avant de l'injecter dans le DOM. Si vous vouliez créer un dans par exemple chrome qui aurait abouti à: p> Ainsi, innerhtml peut donner des résultats imprévisibles, car chaque fois que vous l'utilisez, le code HTML est corrigé par le navigateur (et les navigateurs diffèrent de la manière dont ils le font aussi). Cela est particulièrement vrai pour les éléments de table / table (et encore plus particulièrement dans IE (MS inventé à compléter Je cite de Quirksmode de PPK : p> Si vous supprimez les éléments à travers
innerhtml dans IE, leur contenu est
essuyé et seul l'élément lui-même
(c'est-à-dire des balises d'ouverture et de fermeture)
rester. Si vous souhaitez supprimer des nœuds
que vous voudrez peut-être réinsérer à un
Plus tard, utilisez des méthodes DOM telles que
Removechild () P>
blockQuote> 1 b> sup> plus technique: je pense que chaque navigateur applique son propre ALGORITHM EM>. p> p>
code> de cette façon:
innerhtml code> au fait;)). Si vous souhaitez que votre HTML soit absolument la façon dont vous em> prévu, collez-vous à des méthodes DOM (
CreeEnment CODE> /
Appendicateur code> etc.), ou première construction up une chaîne de l'élément complet que vous souhaitez insérer à l'aide d'InnerHTML, puis insérez-la, en d'autres termes, n'utilisez pas
innerhtml code> avec des chaînes contenant HTML incomplètes. p>
C'est vrai. Et y ajouter, le navigateur analyse innerhtml même si l'innerhtml appartient à un
J'ai rencontré un problème similaire très récemment. Comme il y avait à peine une documentation utile disponible, je devais apprendre par expérience. Voici. P>
Les navigateurs semblent analyser innerhtml dès que tout amendement est effectué. Grâce à une telle analyse, tout extrait HTML non valide sera rejeté / ajouté à un extrait valide! P>
morale de l'histoire b>: chaque fois que vous modifiez innerhtml, assurez-vous que le HTML que vous insérez est valide. Ainsi, Ceci suscite car dans ce dernier cas, dès que vous insérez un Dans ma pensée, vous devez mettre du texte pas à Doucumet.getelementByID ("Nom"). innerhtml
Je pense que vous devriez simplement mettre en HTML.
Utilisez un signe sur ~ c'est ... innerhtml + = "
... table>" code> devrait B> fonctionner correctement mais
... innerhtml + = "<< table > "; ... .innerhtml + = "<\ table>" code> serait probablement b> résultat dans un comportement inattendu. P>
code>, le navigateur analyse la chaîne et ajoute un nœud complet (complétant ainsi votre code incomplet). Par conséquent, tout ce que vous ajoutez plus tard apparaîtrait comme un frère de nœud de table et non comme un enfant que vous aviez initialement destiné. P>
votes
Si vous mettez dans innerhtml quelque chose, vous pouvez obtenir des informations d'API.
Comme moi. Dans la balise de script. J'ai utilisé console.log et document.getElementyID
console.log ('id:' + profil.getid ()); console.log ('Nom:' + profil.getName ()); document.getElementyID ("nom"). innerhtml = code>
+ profil.getName () + code> ` p>
Pls. donner un exemple spécifique. Quelles tags fait quel navigateur met dans quelle séquence?