• JavaScript关于事件绑定


    var odiv=document.getElementsByTagName('div');
    function divclick(obj){
    obj.onclick=function(){
    console.log(obj);
    }
    }
    for (var i = 0; i < odiv.length; i++) {
    divclick(odiv[i]);
    }
    //当执行点击函数时,还需要divclick函数,因此当循环结束时,divclick函数并不会被销毁,因此其作用域也被保留下来,因此正常输出
    
    for (var i = 0; i < odiv.length; i++) {
    odiv[i].onclick=function(){
    console.log(odiv[i]);//此时i已经变化了
    }
    }
    //循环结束,绑定函数结束,函数自身、作用域、变量等都随之销毁,当执行onclick函数时,i值通过作用域链向上找,最后i作为全局变量且值为odiv.length+1,因此输出undefined
    
    for (var i = 0; i < odiv.length; i++) {
    odiv[i].onclick=function(){
    console.log(this);
    }
    }
    //这里涉及到this的指向问题,this指向调用的对象,且this指向是在函数执行时才确定的,并不是在函数定义时确定的
    //当点击事件触发函数时,this指向调用对象,而这里的调用对象正是odiv[i],因此正常输出
    

      

  • 相关阅读:
    事件类型
    program的发展史与两个数学方法
    字符统计与基本正则
    bom与dom
    css长度单位及颜色表示
    grid学习
    position定位的认识
    remark:node端口的close-wait
    css background属性设置
    Promise之我发现
  • 原文地址:https://www.cnblogs.com/chenyongyang/p/7708090.html
Copyright © 2020-2023  润新知