我已经阅读了很多有关==
vs ===
的内容,似乎'==='是可行的方法(至少推荐使用),这也可以防止比较某些无效值。所以我有这样的功能:
$('#frm_filterby').on('change',changeAttr);
function changeAttr() {
var elementVal = $(this).val();
console.log(typeof elementVal) // outputs string
switch(elementVal){
case "1":
$("#frm_search").attr({
"type" : "text",
"placeholder" : "Example: jcook56",
"required" : true
}).val("");
break;
case "2":
$("#frm_search").attr({
"type" : "email",
"placeholder" : "[email protected]",
"required" : true
}).val("");
break;
case "3":
$("#frm_search").attr({
"type" : "number",
"placeholder" : "Example: 103",
"required" : true
}).val("");
break;
default:
$("#frm_search").attr({
"type" : "text",
"placeholder" : "Select Search Criteria",
"required" : false
}).val("");
}
}
因此,上面的函数使用
switch statement
来检查用户选择的过滤器,并根据该过滤器设置search
输入字段中的属性。所以我的问题是我应该使用Number()
还是parseInt()
并强制elementValue
为数字,还应删除case语句值中的字符串并将其替换为数字?那会改变/预防吗?我也想知道是否使用简单的if/else
语句来完成相同的场景,而我会使用equal
呢?例:$('#frm_filterby')。on('change',changeAttr);
函数changeAttr(){
var elementVal = Number($(this).val());
console.log(typeof elementVal)//输出数字
if(elementValue === 1)
$("#frm_search").attr({
"type" : "text",
"placeholder" : "Example: jcook56",
"required" : true
}).val("");
break;
}else if(elementVal === 2){
$("#frm_search").attr({
"type" : "email",
"placeholder" : "[email protected]",
"required" : true
}).val("");
break;
}else if(elementVal === 3){
$("#frm_search").attr({
"type" : "number",
"placeholder" : "Example: 103",
"required" : true
}).val("");
break;
}else{
$("#frm_search").attr({
"type" : "text",
"placeholder" : "Select Search Criteria",
"required" : false
}).val("");
}
}
我读了几篇文章,他们建议在比较值时使用
===
,因此在我的情况下,元素值以字符串形式进入函数。在那种情况下,我必须将值转换为数值,以便使用===
进行比较。如果有人对此有任何想法,请告诉我。 最佳答案
switch
个案例等同于===
。如果没有,这将起作用:
switch ( 1 ) {
case '1':
console.log('hi')
}
将
elementVal
转换为数字不会有任何区别。您的if/else
版本在功能上也相同(尽管break
语句不执行任何操作)。