将大小写切换为字符串
Switch case as string
$(document).ready(function(){
createForm("text,password",".content");
});
function createForm(types,object){
typ = types.split(',');
//var source = "";
$.each(typ,function(){
switch(this) {
case "text":
console.log('text');
break;
default:
console.log('default');
break;
}
});
//$(object).html(source);
}
我有一个控制台中的代码,它返回2xdefault。为什么?
我试图将每种类型的输入作为文本或密码返回,但我的开关无法识别";典型值";
each
调用中的this
是String
对象实例,而不是字符串基元。JavaScript两者兼而有之。在switch
语句中,通过===
与事例进行比较,并且字符串实例不是字符串原语的===
。
三种修复方法:
如果您将开关更改为:
switch (String(this)) {
这将把它变成一个基元,然后
switch
就可以工作了。正如VisioN在下面的评论中指出的那样,使用
$.each
传递的参数(每个字符串作为基元将作为第二个参数提供(:$.each(typ, function(index, value) { switch (value) { // ... } });
使用另一个答案中讨论的任何替代方案(其中一个是一个很好的简单
for
循环(。
旁注:不声明typ
变量会让您成为隐式全局变量的恐怖的牺牲品。
jQuery在这里太夸张了,要想用jQuery正确地完成它,请查看T.J.Crowders的答案。
我推荐一种更简单的方法,使用标准的for
循环。它运行良好:
var types = "text,password".split(",");
for (var i = 0; i < types.length; i++) {
switch(types[i]){
case "text":
console.log('text');
break;
default:
console.log('default');
break;
}
}
您错误地使用了$.each
函数。它应该是这样的:
$.each( typ, function( key, value ) {
switch(value){
case "text":
console.log('text');break;
default:
console.log('default');break;
}
});
尝试使用switch(String(this))
而不是switch(this)
。当然,初始化变量。
相关文章:
- JavaScript Regex(?i)选项中字符串大小写不敏感的部分不起作用
- 如何在JavaScript中按大小写拆分字符串
- Javascript 将 unicode 字符串转换为“标题大小写”
- 正则表达式匹配整个字符串,但大小写不敏感
- 将字符串添加到不区分大小写的 RegExp 中替换的事物开始
- javascript从字符串创建不区分大小写的regex
- 将句子大小写应用于可能包含HTML的字符串
- 使用简单的角度滤波器来替换输入字符串中某些字符串的所有出现,而不考虑大小写和空格
- 用于Cordova应用程序的Javascript SQLite-使用参数搜索,其中字符串包含子字符串大小写insenst
- 在DOM中搜索字符串时不区分大小写
- 如何使切换大小写忽略字符串中的标点符号
- 字符串大小写转换 javascript
- 将驼峰大小写字符串转换为连字符的角度服务
- 如何交替字符串的大小写
- 在 Javascript 中将任何类型的字符串更改为标题大小写
- 在javascript中将字符串转换为句子大小写
- 突出显示所有出现的字符串 - 不区分大小写
- 下划线位置:如何检查匹配的字符串是否不区分大小写
- 不区分大小写的字符串搜索不起作用
- 如何在javascript中对子字符串进行大小写