10
votes

JavaScript: vérifiez si l'élément a changé

Je veux savoir, si possible, comment vérifier JavaScript si un élément a changé ou un attribut de celui-ci?

Je veux dire quelque chose comme window.onhashchange pour un élément comme un élément : xxx

tel que je sais Onchange est quelque chose comme ça, mais cela fonctionnera-t-il si je veux savoir de cette manière: < Pré> xxx


3 commentaires

Pourriez-vous bien vouloir confirmer si vous souhaitez suivre les modifications de l'attribut de l'objet ou de modifier l'attribut d'un élément DOM? Merci


Dupliquer de Stackoverflow.com/Questtions/4266852/...


@ Nyuszika7h Je ne pense pas: P Ceci est une question générale.


5 Réponses :


1
votes

Je suppose que vous auriez besoin d'un moyen de capturer l'événement qui a déclenché le changement d'attribut plutôt que le changement d'attribut. La modification de l'attribut ne pourrait être que due à votre CSS ou à votre JavaScript, les deux manifestations des actions de l'utilisateur.


8 commentaires

Oui, vous devriez capturer l'événement qui modifie l'attribut. Il n'y a pas d'auditeur d'événement pour "Changements d'attribut"


@TIMDREAM Oui, il n'est pas nécessaire de rentrer chez eux sur de tels changements, car de toute façon (CSS ou JavaScript), nous pouvons les attacher au modèle d'événement existant. Merci


-1, cette question ne concerne pas le DOM, voir: var element = {};


@Jan, on dirait que je pouvais avoir mal interprété. Cependant, cela supplique la question, ce scénario justifie-t-il réellement l'utilisation d'un modèle d'événement?


Pourquoi pas, qu'est-ce qui ne va pas avec des événements? JavaScript est une très bonne langue pour travailler avec des événements.


Il vaut mieux incorporer la logique dans les Setters lui-même. Ce n'est pas parce que les événements ne veulent pas dire que c'est un bon design pour les employer tout le temps.


Personne n'a dit qu'il devait l'utiliser tout le temps. Il existe des cas d'utilisation dans lesquels un système d'événements est parfaitement valide.


De quoi parles-tu? Il n'a pas expliqué son usecase. S'il veut réagir sur les changements d'un objet de l'extérieur de son contexte, il s'agit d'une usecase valide. Si vous voulez faire de la base de données comme dans WPF, ce modèle doit.



9
votes

Autant que je comprenne, vous voulez que l'échange sur les propriétés d'objet JavaScript. La réponse est non, cela n'existe pas aussi loin que je sache.

Mais vous pouvez faire une fonction de setter comme celle-ci (comme une preuve de concept): p> xxx pré>

Maintenant, vous obtenez une boîte d'alerte avec 'quelque chose changé de non défini au monde de Bonjour!'. Et (élément.something === 'Hello World!') Code> retournera vrai code>. P>

Si vous appelez maintenant: P>

element.setProperty('something', 'Goodbye world!');


2 commentaires

Je pense que seuls les champs d'entrée incendient l'événement OnChange une fois que leur valeur est modifiée ... Ce code est-il testé? Si oui, fonctionne-t-il sous tous les navigateurs?


Pour autant que je comprends bien, cette question n'a rien à voir avec des éléments DOM. Il s'agit d'objets javascript. J'ai testé cela dans la console chrome. Je suis à peu près sûr que cela fonctionne aussi sur d'autres navigateurs.



1
votes

Je crois qu'il n'y a pas d'événement de ce type. Cependant, vous pouvez utiliser seinterval ou settimeout pour regarder les changements d'élément et l'utiliser pour réagir en conséquence.


0 commentaires

0
votes

Je l'ai fait. Ça marche assez bien. J'aurais utilisé la méthode SetProperty si j'avais connu. xxx


0 commentaires

1
votes

Vous pourriez envisager un observateur de mutation.

Pour ce faire, vous créez d'abord un rappel (tiré lorsque l'élément DOM change)

Attribuez-le à un observateur var observateur = nouveau mutationobserver (rappel);

Dites ensuite à l'observateur de quoi regarder Observer.Observe ('


1 commentaires

Il s'agit de la réponse la plus à jour et pertinente - vous pouvez ajouter un code simple pour rendre cela plus visible Jsfiddle.net / wg4ahtf6