怎么用js或者jquery监控一个变量改变后触发某给事件100分在线等待

Java高知社区 2013-06-28 06:58:05
怎么用js或者jquery监控一个全变量改变后触发某给事件。
是这样的,我定义了一个全局变量
var a=0;
当a的值改变时,触发对应的事件。比如:
给a赋值a=1时调用function test1(){alert(1)}
给a赋值a=2时调用function test2(){alert(2)}
给a赋值a=3时调用function test3(){alert(3)}
请问各路高手怎么实现?


...全文
13599 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
jimchxi 2015-06-12
  • 打赏
  • 举报
回复
十一楼的方法是最好的,也解决了我的问题,再次感谢。
神探狄仁杰 2013-06-30
  • 打赏
  • 举报
回复
各种不确定的情况下,如何做到监控! 也许,你首先要做的是控制变量的可改变方式,让它通过一个接入点来改变! 霰弹式修改与发散式变化,都是致命的。
侠龙 2013-06-30
  • 打赏
  • 举报
回复
你事实上你用的时候,a的值与调用的函数有没有关系,如果a的值与调用的函数没有关系的话,怎么去监听啊。如果a的值与调用的函数有关系是一个映射值的话,用我这个方法就可以实现啊。

var map = {"1":test1,"2":test2,"3":test3};
set_a_value(1,map["1"]);
ayong95 2013-06-30
  • 打赏
  • 举报
回复
11 的想法很好,但是set_a_value这个方法,我必须要明确知道第一个参数是几,然后调用什么样的函数,但是真正用的时候,并不是这样的,a的值不确定,你这里必须要构造一个对象来存储 a的值和方法函数的对应关系。
侠龙 2013-06-29
  • 打赏
  • 举报
回复
最简单的方法是,在给a赋值的时候绑定一个事件。

var a =0;
/*很简单的一个方法,就实现了,你给a赋值的时候,绑定了一个事件,这个事件参数,event你可以自己传入一个函数。这样你以调用给a赋值的方法,set_a_value 就会执行这个绑定的事件*/
var set_a_value = function(_a,event){
    a=_a;
    if(event){
       event();
    }
};

/**调用例子*/
var test = function(){alert(a)}
set_a_value(1,test);
/**输出的值就是1*/
ayong95 2013-06-28
  • 打赏
  • 举报
回复

//当全局变量a = 1时执行
function test1(){
    alert(1);
}

//当全局变量a = 2时执行
function test2(){
    alert(2);
}

//当全局变量a = 3时执行
function test3(){
    alert(3);
}

var a = 0;
function lisner(){
    if (a == 1){
      test1();
      clearInterval(lisnerID);
    }

    if (a == 2){
      test2();
      clearInterval(lisnerID);
    }

    if (a == 3){
      test3();
      clearInterval(lisnerID);
    }

    if (a > 3){
        clearInterval(lisnerID);
    }
}

var lisnerID = setInterval(lisner,100);
希望对你有帮助
Java高知社区 2013-06-28
  • 打赏
  • 举报
回复
引用 8 楼 oarer 的回复:
使用一个临时变量tempA,初始化和每次a值改变时把a值赋给tempA,然后所有的程序起始判断if(a==tempA){}...
晕,什么呀。这个变量值的改变有很多地方改变,我只是想监听它的改变,然后调用方法,OK?
oarer 2013-06-28
  • 打赏
  • 举报
回复
使用一个临时变量tempA,初始化和每次a值改变时把a值赋给tempA,然后所有的程序起始判断if(a==tempA){}...
Java高知社区 2013-06-28
  • 打赏
  • 举报
回复
都没有好的解决办法吗,注意,我的意思大家要看明白。要点是监控变量发生改变,根据变量的值调用相应的方法 。
Java高知社区 2013-06-28
  • 打赏
  • 举报
回复
都没有好的解决办法吗,注意,我的意思大家要看明白。要点是监控变量发生改变触发某事件。
北京-李大鹏 2013-06-28
  • 打赏
  • 举报
回复
function applyA(val){
    a = val;
    switch(val){
        case 1: test1(); break;
        case 2: test2(); break;
    }
}
我猜测你不是为了给A赋值,应该是有其他函数给A赋值,然后根据A的值去调用其他函数。 如果你用JQuery1.7以上版本,可以这样:
function eventHandle(val){
    switch(val){
        case 1: test1(); break;
        case 2: test2(); break;
    }
};
var events = $.Callbacks();
callbacks.add(eventHandle);

function otherFunction(){
    ........... // 私有的处理逻辑
    events.fire(1); // 触发回调函数
    ........... // 私有的处理逻辑
}
可以再进一步,把1、2、3、4定义成常量:

var S_BEGIN = 1,S_RUNNING = 2, S_END=3;
然后在Fire函数中使用常量,这样代码看上去就很舒服了:

events.fire(S_BEGIN);
events.fire(S_RUNNING);
events.fire(S_END);
dracularking 2013-06-28
  • 打赏
  • 举报
回复
如果a的改变点可控,就可以用通知了(observer pattern) 不可控的话就只能轮询了
LJ_liujue 2013-06-28
  • 打赏
  • 举报
回复
就是类似线程监控,让那个检测全局变量的方法不停的跑下去
Java高知社区 2013-06-28
  • 打赏
  • 举报
回复
引用 1 楼 kemucc 的回复:
用方法给a赋值,然后在方法里面跑回调函数
啥?不明白
kemucc 2013-06-28
  • 打赏
  • 举报
回复
用方法给a赋值,然后在方法里面跑回调函数
这个文档包含了HTML/css的一些基础,还有JavaScript中的基础语法、DOM、BOM还有一些学习js中面向对象、和移动web开发、AJAX、jQuery的一些总结,还有些Web前端与移动开发面试宝典; 6、什么是事件冒泡/捕获? 事件冒泡: 事件到达事件目标之后不会结束,会逐层向上冒泡,直至document对象,也就是子元素事件触发会影响父元素的事件; 开关事件冒泡: A,开启事件冒泡:event.addEventListener(eventName,handler,false); B,关闭事件冒泡:假设传统方式事件的返回值为e,就可以通过e.stopPropagation()来关闭事件冒泡; C ,return false; 同时具有阻止冒泡和阻止默认行为的功能 事件捕获:父元素的事件会影响子元素的事件; 开启事件捕获:event.addEventListener(eventName,handler,true) 7、请说说事件委托机制?这样做有什么好处? 事件委托,就是某个事件本来该自己干的,但是自己不干,交给别人来干。就叫事件委托。 打个比方:一个 button对象,本来自己需要监控自身的点击事件,但是自己不来监控这个点击事件,让自己的父节点来监控自己 的点击事件。 优点: A,提高性能:列如,当有很多li同时需要注册事件的时候,如果使用传统方法来注册事件的话,需要给每 一个li注册事件。然而如果使用委托事件的话,就只需要将事件委托给该一个元素即可。这样就能提高性能。 B,新添加的元素还会有之前的事件; 11、怎么理解jQueryJQuery就是JavaScript和查询(Query),是一个Javascript库。可以用来操作文档对象、 选择DOM元素、制作动画效果、事件处理、使用Ajax等。 优点: a、轻量级 b、具有强大的选择器 c、封装了大量的DOM操作 d、事件处理机制相当可靠 e、完善的Ajax f、不污染顶级变量 g、出色的浏览器兼容性 h、链式操作方式 i、隐式迭代 j、行为与结构离 k、支持丰富的插件 l、完善的文档 m、开源 12、Jquery.on这个方法怎么看? 答: jQuery.on()方法可以给匹配元素(可以是多个)绑定一个或多个函数, off 可以解除绑定

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧