单个表单按钮错误地触发了两个事件侦听器和警告框

时间:2016-06-26 18:54:30

标签: javascript html forms alert

最初我设置了多个按钮,如下所示:

<button id="plus" type="button" onclick=assignVarAddition()>+</button>
<button id="minus"  type="button" onclick=assignVarSubtraction()>-</button>

这些按钮链接到各个javascript函数,其中变量firstNumb和secondNumb是从表单输入生成的。每个按钮链接到它自己的功能,alert()只会被调用一次。 功能如下

function assignVarAddition() {
var firstNumb = +document.getElementById("Numb1").value;
var secondNumb = +document.getElementById("Numb2").value;
var total = firstNumb + secondNumb;
alert("You added " + firstNumb + " and " + secondNumb +  ". The total of these two numbers is " + total);
}

function assignVarSubtraction() {
var firstNumb = +document.getElementById("Numb1").value;
var secondNumb = +document.getElementById("Numb2").value;
var total = firstNumb - secondNumb;
alert("You subtracted " + secondNumb + " from " +  firstNumb + " and got " + total);
}

我试图将js清理并缩短为一个函数,所以现在我尝试在一个函数中使用事件监听器,其中一个单独的事件监听器和一个单独的alert()被设置为单击每个按钮。但是当我点击一个时,两个警报都会被触发,然后是加法,然后是减法,总计会一个接一个地显示在单独的警告框中。 现在按钮和功能设置为:

<button id="plus" type="button" onclick=assignVarAddition()>+</button>
<button id="minus"  type="button" onclick=assignVarSubtraction()>-</button>

function assignVarCalc() {
var firstNumb = +document.getElementById("Numb1").value;
var secondNumb = +document.getElementById("Numb2").value;
document.getElementById("plus").addEventListener("click", alert(firstNumb+secondNumb));
document.getElementById("minus").addEventListener("click", alert(firstNumb-secondNumb));
}

我需要做些什么来阻止同时调用这两个警报 - 这样当&#39; +&#39;按下按钮,警报框中只显示Numb1和Numb2的添加?不是附加值,而是减去它自己的警报。

请注意我为html和javascript设置了单独的文件,并在html文件中设置了标记。

3 个答案:

答案 0 :(得分:1)

您尚未删除html中的onclick属性。以及如何计划触发对“assignVarCalc()”方法的调用。

您的问题的可能解决方案之一发布在此处:https://jsfiddle.net/9f7q8d9u/

Guid id = Guid.NewGuid();

答案 1 :(得分:1)

我已经复制了你的代码,而不是把它放到我的HTML文件中。我刚刚提醒“测试”一词来测试情况。看看我的代码:

<html>
<head>
<title></title>
<script>
var testing="hello";
</script>
</head>
<body></body>
</html>

如您所见,我删除了警报周围的功能。当我这样做时,它对我有用,看看这个例子。我希望这有效,这就是你要找的东西。如果它有效,请让我知道我很想听到。

答案 2 :(得分:1)

您可以共享相同的功能并每次发送不同的参数&#39; +&#39;或者&#39; - &#39;

&#13;
&#13;
function assignVarCalc(operation) {
  var firstNumb = +document.getElementById("Numb1").value;
  var secondNumb = +document.getElementById("Numb2").value;

  
  if(operation=='+'){
    alert(firstNumb + secondNumb);
  } else{ 
    alert(firstNumb - secondNumb);
  }
}
&#13;
<button id="plus" type="button" onclick="assignVarCalc('+')">+</button>
<button id="minus"  type="button" onclick="assignVarCalc('-')">-</button>

<input id="Numb1">
<input id="Numb2">
&#13;
&#13;
&#13;