JS设置搜索大小写不敏感时if判断错误else分支失效如何解决
问题原因
你修改后的判断条件if(search == "about" || "About")存在语法逻辑错误:
JavaScript中||逻辑或运算符会判断两侧表达式的布尔值,非空字符串"About"本身的布尔值永远为true,所以无论搜索框输入什么内容,整个判断条件都会返回true,自然不会触发else分支。
实现大小写不敏感匹配的两种常用方案
方案1:统一转换输入值的大小写后匹配
将输入的搜索值统一转为全小写(或全大写),再和固定大小写的目标字符串匹配,是最简便性能最优的方案:
function Focus(){ var search = document.getElementById("search-box").value; // 转全小写后匹配 if(search.toLowerCase() === "about"){ document.getElementById("about").focus(); } else{ alert("Not Found"); } }
同理也可以用toUpperCase()转全大写后和"ABOUT"匹配,效果完全一致。
方案2:使用忽略大小写的正则匹配
用带i修饰符的正则表达式做全匹配,也可以实现大小写不敏感校验:
function Focus(){ var search = document.getElementById("search-box").value; // i修饰符表示忽略大小写,^和$限定完全匹配输入内容 if(/^about$/i.test(search)){ document.getElementById("about").focus(); } else{ alert("Not Found"); } }
内容的提问来源于stack exchange,提问作者Shanid P
相关产品推荐
相关产品推荐

