用它来调用回调中的其他函数

时间:2014-11-06 11:58:09

标签: javascript

嘿伙计们我试图在addEventListener

的回调函数中调用函数

我正在使用的代码是

<html>
  <body>
    <table id="outside">
      <tr><td id="t1">one</td></tr>
      <tr><td id="t2">two</td></tr>
    </table>
    <script>
      function avis(n) {

          return n;
      }
      var c = document.getElementById('outside');
      function babe() {
          if(this.avis(c) == 'outside') {
              console.log('yuck');
          }
      }
      var el = document.getElementById("outside");
      el.addEventListener("click", babe,  false);
    </script>

上面的代码给出了Uncaught TypeError: undefined is not a function

之类的错误

但是当我使用代码时:

function babe() {
    if(this.id == 'outside') {
        console.log('yuck');
    }
}

工作正常..

所以我的问题是......是否可以在回调中调用this.functionname()的另一个函数?

1 个答案:

答案 0 :(得分:1)

this.avis不是函数,avis

&#13;
&#13;
      function avis(n) {

          return n;
      }
      var c = document.getElementById('outside');
      function babe() {
          if(avis(c).id == 'outside') {
              console.log('yuck');
          }
      }
      var el = document.getElementById("outside");
      el.addEventListener("click", babe,  false);
&#13;
    <table id="outside">
      <tr><td id="t1">one</td></tr>
      <tr><td id="t2">two</td></tr>
    </table>
&#13;
&#13;
&#13;

进一步说明

这个内部宝贝是指您在其上创建事件处理程序的元素id:outside。它在元素上下文中由JavaScript调用(如apply)。但是你不需要avis功能。只需检查this.id,除非您需要avis做其他事情

&#13;
&#13;
      var c = document.getElementById('outside');
      function babe() {
          if(this.id == 'outside') {
              console.log('yuck');
          }
      }
      var el = document.getElementById("outside");
      el.addEventListener("click", babe,  false);
&#13;
    <table id="outside">
      <tr><td id="t1">one</td></tr>
      <tr><td id="t2">two</td></tr>
    </table>
&#13;
&#13;
&#13;