Javascript并不总是返回false

时间:2017-11-05 06:00:30

标签: javascript html

这是我的代码。控制台总是读错了。怎么了。我认为这是我对文本框的反对意见。

function compare() {
  var test = "test";
  var input = document.getElementById("input").value;
  var inputLen = input.length;
  var tick;
  for (tick = 0; tick < inputLen; tick++) {
    if (input[tick] != test[tick]) {
      break;
    }
  }
  if ((tick - 1) == test.length) {
    console.log("equal");
  } else {
    console.log("wrong");
  }
}
<input type="text" id="input" placeholder="text">
<input type="submit" id="submit" onclick="compare()">

我真的可以使用一些帮助。 console.log始终返回“错误”。

2 个答案:

答案 0 :(得分:1)

执行for循环时,tick变量在退出循环之前的最后一次迭代时增加到5。要解决此问题,请将其与test.length进行比较,而不要使用-1

进行降低

function compare() {
  var test = "test";
  var input = document.getElementById("input").value;
  var inputLen = input.length;
  var tick;
  for (tick = 0; tick < inputLen; tick++) {
    if (input[tick] != test[tick]) {
      break;
    }
  }
  // After exiting the loop, tick will be equal to 5, not 4.
  if (tick === test.length) {
    console.log("equal");
  } else {
    console.log("wrong");
  }
}
<input type="text" id="input" placeholder="text">
<input type="submit" id="submit" onclick="compare();">

答案 1 :(得分:-3)

解决方案1 ​​

var test = "test";
var input = document.getElementById("input").value;
var inputLen = input.length;
var tick;

for (tick=0; tick < inputLen; tick++)
{
    if (input[tick]!=test[tick])
    {
        break;
    }          
}

if (tick==test.length)
{
   console.log("equal");
}
else
{
   console.log("wrong");
}

解决方案2

var test = "test";
var input = document.getElementById("input").value;
var inputLen = input.length;
var tick;

for (tick=1; tick <= inputLen; tick++)
{
   if (input[tick-1]!=test[tick-1])
   {
       break;
   }          
}

if ((tick - 1)==test.length)
{
   console.log("equal");
}
else
{
   console.log("wrong");
}