我有这个应该工作的简单代码,但它不起作用。 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

最佳答案

问题在于您的选项值具有尾随空格" ",因此它们与您的country不匹配(后者没有尾随空格)。

"United States" != "United States "


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



可能的解决方案:


在比较结果之前修剪text()结果(推荐)
从HTML内删除空格(无论如何我也会这样做)
country值上添加一个额外的空间(废话……但确实可行)




推荐的解决方案

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


您可能需要检查trim()函数的browser compatibility以确保其符合您的要求。如果没有,您可能会发现一些有趣的this post

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

10-16 19:44