zoukankan      html  css  js  c++  java
  • onclick事件属性与在用js绑定onclick事件中的this的区别

    一句话:this永远指向所在函数的拥有者.

    举几个例子:

    1.id为"aa"的a元素有一个onclick属性,属性值为f1()

    <a href="javascript:;" title="" id="aa" onclick="f1()">分类列表</a>
    
    //f1的定义
    function f1(){console.log(this);}
    //查看a元素的onclick属性是什么
    console.log(document.getElementById("aa").onclick)
    function  onclick(event) {
      f1()
    }

    通过以上console.log发现,a元素的onclick属性是一个名为onclick的函数,此函数形参是event,函数内容是调用f1.

    然后我触发此元素的onclick时间后,是这个结果:

    Window {speechSynthesis: SpeechSynthesis, caches: CacheStorage, localStorage: Storage, sessionStorage: Storage, webkitStorageInfo: DeprecatedStorageInfo…}
    

    也就是说,f1中的this指向了window.为什么呢,因为文字最开始说的那句话:this指向所在函数的拥有者,f1的拥有者是谁?是window对象.可以打印出来看看:

    console.log(document.getElementById("aa").f1)
    undefined
    undefined
    console.log(window.f1)
    function f1(){console.log(this);}
    undefined
    

     2.id为"aa"的a元素有一个onclick属性,属性值为f1(this)

    <a href="JavaScript:;" title="" onclick="f1(this)" id="aa">分类列表</a>
    //f1的定义,有个形参,并打印
    function f1(o){console.log(o);}
    

    看看aa元素的onclick属性是什么:

    console.log(document.getElementById('aa').onclick)
    function onclick(event) {
      f1(this)
    }
    

    aa的onclick属性指向一个名为onclick的函数,这个函数内部调用了函数f1,那此时f1中的this又是谁?看看就知道了:

    我触发onclick事件后,打印出来的this:

    <a href="JavaScript:;" title="" onclick="f1(this)" id="aa">分类列表</a>
    

    为什么呢?因为this指向其所在函数的拥有者,即:onclick函数的拥有者,即aa元素.

    3. id为"aa"的a元素绑定了一个onclick事件(并没有onclick属性)

    <a href="JavaScript:;" title="" id="aa">分类列表</a>
    
    //绑定了onclick事件
    function f1(){console.log(this);}
    document.getElementById('aa').onclick=f1;
    

    从以上js代码可以看出,aa元素有一个onclick属性,这个属性指向了函数f1;

    我触发onclick事件后,打印的this:

    <a href="JavaScript:;" title="" id="aa">分类列表</a>
    

    为什么呢,因为this指向其所在函数的拥有者,即aa元素.

    以上就是对onclick事件中this的简单分析.

      

  • 相关阅读:
    centos下卸载rpm包
    centos下添加环境变量和启动apache
    centos(linux) 下如何查看端口占用情况及杀死进程
    如何使上层的div遮住的链接可以点击
    jquery.blockUI.2.31.js 弹出层项目介绍
    fieldset、legend、display html元素
    <a>标签中href="javascript:;"的意思
    memcache 学习笔记
    sublime text3 JS语法检测插件
    Apache Rewrite的主要功能
  • 原文地址:https://www.cnblogs.com/ch459742906/p/5858925.html
Copyright © 2011-2022 走看看