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