尝试获取事件侦听器的目标时出现“未定义目标”错误

时间:2019-03-23 08:01:24

标签: javascript html

我正在尝试计算三角形,并且现在正在尝试我的代码,因此我需要制定一种算法来计算三角形,而不是对其进行硬编码。我需要抓住事件侦听器的目标,但是target无法正常工作,我也不知道为什么或如何解决它。 target引用事件侦听器之前的aV && a,它们都是输入字段。

function calc(){
    if (target.value.length > 0){
        console.log("hooray");
    };
};

aV && a.addEventListener("keydown", function(ev){
    if(ev.keyCode == 13){
        calc();
    };
});

3 个答案:

答案 0 :(得分:1)

整个addEventListener语句是有条件的,等同于go:

true && true;

它什么都不做。添加if语句(还要确保将ev.target作为参数传递给calc

function calc(target){
    if (target.value.length > 0){
        console.log("hooray");
    };
};

if (aV) {
    a.addEventListener("keydown", function(ev){
        if(ev.keyCode == 13){
            calc(ev.target);
        };
    });
}

答案 1 :(得分:1)

您可以使用forEach()遍历它们。您还必须将调用函数传递给目标。

function calc(target){
  if (target.value.length > 0){
    console.log("hooray");
  };
};

[aV, a].forEach(function(el){
  el.addEventListener("keydown", function(ev){
    if(ev.keyCode == 13){
      calc(ev.target);
    };
  });
});

答案 2 :(得分:0)

处理事件的函数应如下所示:

function calc_keydownHandler(e){
var target = e.target;
//do something with the target now
}

因为您有target的参数,所以引用将是target.target,这没有任何意义。