账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    js怎么监听元素属性变化
    29
    0

    原生js监听dom元素的属性值的变化,如果监测的目标属性发生变化。执行特定语句。
    监听Dom元素的Style内部的某个特定的属性,例如display,默认为none,修改为inline时触发事件

    思路:

    1.Object.defineProperty
       set,get
    2.Mutation Observer API
     
     
     

    发生的问题:

    1.defineProperty监测的目标是对象,Dom元素的属性集合[dom.attributes]也为对象{}。attributes对象是所有的属性集合的对象,style是属性集合里下属的集合,因为style的参数多。

    问题:把dom.attributes当做对象监测集合下的style,当style发生改变的时候触发Set方法内的语句。但是测试的时候,当图片的display的值发生改变时,set无触发,经测试Object.defineProperty无反应。

        var m=document.getElementById("m").attributes; //对象{}
        Object.defineProperty(m,'style',{
            get:function () {
                console.log('get:'+m.style);
                return m.style.display;
            },
            set:function (v) {
                console.log('set:修改后的值'+v);
                m.alt='图片';
            }
        })

    2.Mutation Observer API它等待所有脚本任务完成后,才会运行(即异步触发方式),不知道能不能实时触发修改。

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • O桂果O 普通会员 1楼
      502 Bad Gateway

      502 Bad Gateway


      nginx
    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部