平等操作员不起作用

问题描述 投票:0回答:5

我正在将用户输入与Array中的元素进行匹配。 “Index === lengthOfBoat”不输出“Works”,即使用户输入与数组中的数字匹配也是如此。如果我使用“>”符号,控制台输出“Works”。

认为这应该很简单。

我究竟做错了什么?

var lenghtOfBoat = [4, 5, 6, 7, 8, 9];
var inputBoatLenght = document.getElementById("boatLenght");

inputBoatLenght.addEventListener("change", function() {
    var index = lenghtOfBoat.indexOf(inputBoatLenght);

    if (index === lenghtOfBoat) {
        console.log("Works");
    }
    else {
        console.log("Nooo");
    }
})

<!DOCTYPE html>
<html>
    <head>
        <title>Båd Dækning</title>
    </head>
    <body>
        <input type="number" name="boatLenght" id="boatLenght" placeholder="Båd Længde">
        <input type="number" name="boatHK" id="boatHK" placeholder="Båd HK"> 

        <script type="text/javascript" src="script.js"></script>
    </body> 
</html>

BR马丁

javascript arrays
5个回答
0
投票

getElementById为您提供HTMLElement,但您需要获取所选元素的值。然后该值将是一个字符串。因此,使用parseInt()或Number()转换为数字以将其与索引进行比较。

var lenghtOfBoat = [4, 5, 6, 7, 8, 9];
var inputBoatLenght = document.getElementById("boatLenght").value;

inputBoatLenght.addEventListener("change", function() {
    var index = lenghtOfBoat.indexOf(parseInt(inputBoatLenght));


    if (index === lenghtOfBoat) {
        console.log("Works");
    }
    else {
        console.log("Nooo");
    }
})
<input type="number" name="boatLenght" id="boatLenght" placeholder="Båd Længde">
        <input type="number" name="boatHK" id="boatHK" placeholder="Båd HK"> 

    

0
投票

在这种情况下,您可以简单地使用includes,它将返回boolean

if (lenghtOfBoat.includes(inputBoatLenght)) {
  console.log("Works");
}
else {
   console.log("Nooo");
}

0
投票

你可以检查lenghtOfBoat.indexOf(+this.value) > -1,并采取行动:

var lenghtOfBoat = [4, 5, 6, 7, 8, 9];
var inputBoatLenght = document.getElementById("boatLenght");

inputBoatLenght.addEventListener("change", function() {
  if(lenghtOfBoat.indexOf(+this.value) > -1){
    console.log("Works");
  }else{
    console.log("Nooo");
  }
})
<input type="number" name="boatLenght" id="boatLenght">

0
投票

您可以检查lengthOfBoat数组是否包含inputBoatLength。您需要将inputBoatLength转换为数字,以检查它是否存在于数组中。

var lenghtOfBoat = [4, 5, 6, 7, 8, 9];
var inputBoatLenght = document.getElementById("boatLenght");
inputBoatLenght.addEventListener("change", function() {

  var inp = +this.value;
  if (lenghtOfBoat.includes(inp)) {
    console.log("Works");
  } else {
    console.log("Nooo");
  }

})

0
投票

indexOf()方法返回可在数组中找到给定元素的第一个索引,如果不存在则返回-1。更换:

index === lenghtOfBoat

通过:

index >= 0

here了解更多

© www.soinside.com 2019 - 2024. All rights reserved.