Préservation des écouteurs d'événements lors de l'ajout à innerHTML
Lors de l'attribution au innerHTML d'un nœud parent, les gestionnaires d'événements attachés aux descendants peuvent être détruits. Par exemple, considérons le code ci-dessous :
<div><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false"><span>
<script></p>
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">mydiv = document.getElementById("mydiv");
mydiv.innerHTML += "bar";</pre><div class="contentsignin">Copier après la connexion</div></div>
<p></script> ;<br></pre></p>
<p>Ici, le gestionnaire d'événements onclick attaché au span contenant "foo" est détruit après l'affectation à mydiv.innerHTML.</p>
<p>Pour éviter ce problème, utilisez la méthode .insertAdjacentHTML() au lieu de .innerHTML. Cette méthode préserve les écouteurs d'événements et est prise en charge par tous les principaux navigateurs.</p>
<p><pre class="brush:php;toolbar:false"><script></p>
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">var html_to_insert = "<p>New paragraph</p>";
document.getElementById('mydiv').insertAdjacentHTML('beforeend', html_to_insert);</pre><div class="contentsignin">Copier après la connexion</div></div>
<p></script>
L'argument 'beforeend' spécifie où dans l'élément insérer le contenu HTML. D'autres options incluent « avant le début », « après le début » et « après la fin ».
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!