【问题标题】:Else part is executed even when the if condition is true in Javascript即使 JavaScript 中的 if 条件为真,其他部分也会执行
【发布时间】:2018-07-21 17:00:11
【问题描述】:

strong text我想获取用户输入并通过对象数组进行搜索。 我使用 for in 遍历对象数组和 if 循环进行比较。如果 if 条件为真,则需要向用户显示当前对象的详细信息,如果未找到显示错误消息。如果仅提供 If 条件,我的代码可以正常工作,但如果提供 else 条件,则始终执行 else 块。
我的 html :

 <input type="text" id="name" placeholder="Name"><br>
 <input type="button" value="Get Pokemon Details" id="pokedetails">

JS:

for (var n in data.pokemon) {
if (data.pokemon[n].name.toLowerCase() === value.toLowerCase()) {
  let a = data.pokemon[n];
  displayDetails(a);
  console.log(a);
  break;
}else {
alert('invalid name');
}}}

我的 javascript 代码已包含在 jsfiddle 中以供查看,请访问此处以获取完整的脚本文件。Click Here to Visit JsFiddle

我的代码有什么问题或任何解决方案?

如果您在阅读或理解问题时发现一些奇怪的东西,这是我在 Stackoverflow 中的第一个问题。

【问题讨论】:

  • edit您的问题并提供minimal reproducible example
  • .hasOwnProperty(next_evolution) — 变量next_evolution在哪里定义?你的意思是字符串.hasOwnProperty("next_evolution").
  • “即使 JavaScript 中的 if 条件为真,也会执行其他部分” 不,不是。放下这种信念,这样你就可以看到真正发生的事情。
  • 不要随机粗体部分您的文本。它使很难阅读
  • @Xufox next_evolution 是提供的数据中的对象之一。对于该函数,我只想检查输入名称是否存在于 next_evolution 对象中并显示口袋妖怪的名称

标签: javascript html json for-loop if-statement


【解决方案1】:

使用 temp 变量可以解决问题。

  var flag=0;
  for (var n in data.pokemon) {
    if (data.pokemon[n].name.toLowerCase() === value.toLowerCase()) {      
      flag=1;
      break;      
    }
  }
  if (flag==1){
    let a = data.pokemon[n];
      displayDetails(a);
      console.log(a);
  }
  else{
    alert('Invalid Name');
  }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多