使用此函数在回调中调用其他函数

Using this to call other function in callback

本文关键字:函数 调用 其他 回调      更新时间:2023-09-26

嘿,伙计们,我正试图用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()的函数?

this.avis不是函数,avis

      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);
    <table id="outside">
      <tr><td id="t1">one</td></tr>
      <tr><td id="t2">two</td></tr>
    </table>

进一步说明

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

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