javascript - 我的 if 语句给出了错误的输出

标签 javascript if-statement parameters boolean

window.onload = start;


function start() {

  document.getElementById("kalk").onclick = find;
  find(1, 9999);
}

function find(min, max) {
  var factor = document.getElementById("tall").value;
  var factor2 = document.getElementById("tall2").value;

  var x = factor * factor2;

  document.getElementById("utskrift").innerHTML = x;

  if (x >= min && x <= max) {
    document.getElementById("msg").innerHTML = "Number is in interval."
  } else {
    document.getElementById("msg").innerHTML = "Number is not in interval."
  }
}
<h2>Gang to tall</h2>

T1 <input type="number" id="tall" /> T2 <input type="number" id="tall2" />

<button id="kalk">Finn tall i intervall</button> Sum: <span id="utskrift"></span>

<p id="msg"></p>

所以通过阅读这段代码.. 我想做的是有两个输入,我将输入的数字相乘。在我的“Find()”参数中,我有两个参数表示数字应该在 1-9999 之间。在我的“函数查找”中,我将这些参数称为最小值和最大值。在代码的下方,我询问输出是否介于这些数字之间,介于最小值和最大值之间,给出“数字在间隔内”。问题是,即使数字在这些参数中,我也会得到我的 else 语句。有没有办法解决这个问题或在参数中加入一个输入感受?

谢谢

最佳答案

您将函数 find 直接附加到点击事件监听器。该函数需要两个参数 minmax:

function find(min, max)

但是当点击发生时,作为事件监听器,它只接收一个参数,即事件对象。因此 min 将是一个事件对象,而 max 将是 undefined 而你的 if 语句不会工作。您可以通过将 find 中的 minmax 记录到控制台来检查这一点。

将函数 find 调用包装在另一个函数中并将后者作为事件监听器附加:

document.getElementById("kalk").onclick = function(event) { // the event listener function recieves the event object as the only parameter (not that argument event here is not necessary, I just added it for explanation)
   find(1, 90000);                                          // when this function get executed (when a click happens) then call find with proper parameters
}

关于javascript - 我的 if 语句给出了错误的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47490961/

相关文章:

windows - 使用 IF 批量过滤多个结果

python - 带输出的 sqlalchemy 存储过程

c# - 以编程方式查询 SharePoint 列表

javascript - 如何将 React.Component 放入 CSS 内容属性(在 :before/:after pseudo-elements)?

javascript - 是否可以设置组件在文本换行之前可以水平滚动的最大距离?

javascript - 如何调用 Angular 组件中 asset 文件夹下单独文件中的外部 Javascript 函数?

php - 如何使用 'LIKE' where 和 '%' 进行搜索操作来编写 SQL 'OR' 查询?

c - 为什么此 C 程序代码输出为 False?预期输出为真

c# - 为 SpecFlow 场景提供多个 When 语句

vba - 将数组传递给 ParamArray