javascript - 简单的 if 语句不起作用

标签 javascript jquery

我有这个简单的代码,应该可以工作,但它不起作用。 if 语句似乎从来都不是真的。

JS:

$(document).ready(function(e) {
  var country = "United States";

  $.each($('select[name="country"]').children('option'), function(){
    if($(this).text() == country){
      alert("found");
    }else{
      console.log("Not found");
    }

  });

});

HTML:

<select name="country"  value="" >
  <option value="0" >Afghanistan </option>
  <option value="1" >Albania </option>
  <option value="2" >Algeria </option>
  <option value="3" >American Samoa </option>
  .
  .
  .
  .

我在控制台中没有收到任何错误。

JsFiddle

最佳答案

问题是您的选项值有一个尾随空格"",因此它们与您的国家/地区(没有尾随空格)不匹配。

"United States" != "United States "

注意:您可以通过添加断点并检查这两个值来轻松调试此问题。

<小时/>

可能的解决方案:

  1. 在比较之前 trim text() 结果(推荐)
  2. 删除 HTML 中的空格(无论如何我也会这样做)
  3. country值中添加一个额外的空格(废话......但确实有效)
<小时/>

推荐解决方案

if($(this).text().trim() == country){
    alert("found");
}

您可能需要检查 browser compatibility trim() 函数,以确保它符合您的要求。如果没有,那么您可能会找到 this post有一些兴趣。

关于javascript - 简单的 if 语句不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38874071/

相关文章:

javascript - 多个悬停 toggleClass 只工作一次

javascript - 自定义 JQuery UI 对话框的正确方法

jquery - 如何使用 jQuery 的 "data"取消选中复选框?

javascript - 根据国家/地区代码验证电话号码

javascript - 使用 Selenium 修改 JavaScript 变量

javascript - 正则表达式允许超过指定的字符

jquery - 如何纠正字体调整按钮对齐方式

javascript - 如何在移动浏览器中禁用内容选择

javascript - angular.injector 数组值不返回当前值

javascript - 当我们拖动并创建事件时调用函数,Jquery完整日历