6
votes

variable de JavaScript Onchange

Y a-t-il un moyen d'appeler une fonction JavaScript si une variable JavaScript change des valeurs à l'aide de jQuery?

quelque chose à l'étendue de - xxx

de cette façon je ne voudrais pas Il faut ajouter un événement Onchanange à tant de fonctions différentes.


0 commentaires

8 Réponses :


2
votes

Non, il n'y a pas, il suffit de voter avec seinterval ou Settimeout ou rappelons. Les événements s'appliquent uniquement à dom. Je suggérerais que vous essayiez d'aller avec des rappels et de faire des choses comme ceci: xxx

C'est un exemple rugueux, mais devrait vous donner l'idée.


0 commentaires

21
votes

(quelque chose semble un peu planifié de votre code si vous avez besoin de fonctionnalités comme celle-ci) em>

Le moyen le plus simple d'ajouter cette fonctionnalité consiste à créer une fonction permettant de mettre à jour votre variable, qui appelle également Quelle que soit autre fonction que vous souhaitez. p>

au lieu de: p> xxx pré>

vous faites: p>

var test = 1;

function set_test(newval) {
  test = newval;
  my_callback(); // this is whatever you wanted to call onChange
}

set_test(2);
set_test(3);


2 commentaires

+1 Après avoir lu les autres, c'est clairement la meilleure réponse.


+1 pour "Quelque chose semble un peu précisément planifié dans votre code si vous avez besoin de fonctionnalités comme celle-ci". Plutôt vrai.



-1
votes
The below function will poll for changes in the test variable every 5 seconds:

// initialize test variable globally
var test = 1;

// global variable to store the previous value of test
// which is updated every 5 seconds
var tmp = test;

setInterval("pollForVariableChange()", 5000);

function pollForVariableChange() {
    if (tmp != test) {
        alert('Value of test has changed to ' + test);
    }
    tmp = test;
}

0 commentaires

1
votes

Une option consiste à envelopper vos données dans un objet plus lourd.

var Watching = function(){
    var a;

    this.getA(){
        return a;
    };

    this.setA(value){
        a = value;
        this.trigger('watch');
    };

    his.watchA(callback){
        this.bind('watch', callback);
    };
};

var obj = new Watching();
obj.watchA(function(){ alert('changed'); });
obj.setA(2);


0 commentaires

1
votes

Cela ne répond pas à votre question exactement, mais cela peut résoudre votre problème: Faites votre variable en tant que contenu HTML d'un élément, puis utilisez l'événement JQuery Change ()

<script>
document.write("<div id='test'>"+test+"</div>";
$("#test").change(function(){//your script here});
</script>


0 commentaires

6
votes

Essayez ceci, c'est un événement de changement de variable réel: xxx


0 commentaires

0
votes

Vous pouvez créer une classe à notifier lorsque votre variable a changé. C'est la classe: xxx pré>

alors vous pouvez créer une instance de cette classe au lieu de votre variable: p> xxx pré>

et quand vous voulez Changez votre variable, utilisez simplement ce code: P>

myVar.value = 20; // calls the changeHandler function
myVar.value = 20; // does't call the changeHandler function
myVar.value = 40; // calls the changeHandler function


0 commentaires

0
votes

Vous pouvez faire quelque chose comme celui-ci avec réglage des intervalles pour garder une trace du changement: xxx


0 commentaires