Donc, j'ai eu un problème dans lequel une image sera créée encore et encore si je continue de me concentrer sur la zone de texte, je veux juste que la photo soit créée une fois et si je décide de cliquer dans la zone de texte et Concentrez-vous là-bas, je ne veux pas que plus d'images soient créées, donc un type de fonction unique et fait. J'ai essayé d'expérimenter avec Supprimer EventListener, mais cela ne faisait rien vraiment pour moi.
p>
<h2>The Element</h2> <input type="text" name="firstname" class="input"> <div id="imgsauce"></div>
3 Réponses :
Utilisez l'option p> une fois code> d'un
eventTarget.addeventlistener () code>
: <h2>The Element</h2>
<input type="text" name="firstname" class="input">
<div id="imgsauce"></div>
Une seule chose à noter est que Le Une fois l'option code> n'est pas pris en charge par IE
.
edit strong> Le problème que vous avez maintenant est dû à une nuance avec p> refelevereventListener code>. Il ne peut supprimer qu'une fonction d'auditeur si vous passez à nouveau cette fonction: ce qui signifie que vous ne pouvez jamais utiliser cette fonction pour supprimer une fonction anonyme. Et vous avez ajouté une fonction anonyme. Pour rendre cela plus simple, je ferais des choses en une seule fonction qui se réfère elle-même lorsqu'il est temps d'être supprimé. P>
<h2>The Element</h2>
<input type="text" name="firstname" class="input">
<div id="imgsauce"></div>
Bonjour j'ai mis à jour mon code alors maintenant que la photo ne montre que s'il ne répond pas aux conditions de la déclaration IF. Mais j'ai toujours la question de la photo montrant plusieurs fois, je ne suis pas vraiment sûr de savoir comment rendre ce travail correctement maintenant que c'est à l'intérieur d'une déclaration si d'autre.
@Eirikdaae Voir ma réponse mise à jour. Est ce que ça aide? Alternativement, dans l'auditeur de l'événement, vous pouvez simplement faire un rapide, si (/ * image est enfant d'imgsauce * /) {// ...} code> ...
Hey, je veux aussi créer une image pour quand les conditions sont remplies alors quelle serait la meilleure façon d'y aller. J'ai essayé de simplement copier et coller le code pour les conditions if et bien, mais avec des sources d'image différentes, mais parce que cela supprime l'événement, donc je ne peux que l'utiliser une fois. Y a-t-il un moyen pour la fonction de s'exécuter une seule fois (crée une image, quel que soit l'environ des fois que vous vous concentrez), mais conserve l'événementListener afin que je puisse simplement remplacer l'image actuelle avec une image différente une fois que l'autre condition est remplie?
Voir mon Nouvelle réponse .
Depuis votre nouvelle question (sur le commentaire à mon Autre réponse ) a une implémentation aussi différente, je vais Pour le mettre comme une réponse séparée.
Si tout ce que vous souhaitez faire est d'afficher une image différente basée sur le succès ou l'échec, de la manière de faire de manière plus simple. Vous n'avez plus à vous soucier de supprimer l'auditeur, vous pouvez donc utiliser une fonction anonyme. Maintenant, il s'agit d'une question de penser au problème différemment. P>
au lieu de créer une nouvelle image si la réponse échoue par rapport à la réussite, il suffit de mettre un dans le dom et de le cacher - vous allez Montrer cela, peu importe ce qui est de toute façon. Ensuite, vous devez juste jeter un peu de CSS sous (facultatif, juste pour garder le Dom Nordy). P>
p>
if (event.target.value.length > 0) { // ... }
Peut-être que vous pouvez définir une variable d'assistance qui est définie lorsque la fonction Image () a été appelée (var déjà). Et seulement si la variable d'assistance n'est pas vraie, appelez la fonction Ajout autrement ne faites rien.