我正在为我的网站写一个Linux“控制台模拟器”作为复活节彩蛋。我使用switch语句处理给出的命令,如下:
function processCommand(command) {
var args = command.split(" ");
console.log(args[0]);
var res;
switch(args[0]) {
case "ls":
res = ls($(".line.new .directory", args[1], args[2]).text());
break;
default:
res = args[0] + ": command not found";
}
$(".line.new .response").html(res);
}
这由以下JQuery调用:
$(document).keydown(function(e) {
...
else if(e.which == 13) {
$(".line.new").append('<div class="response"></div>');
processCommand($(".line.new .input").text()); // <-------------
$(".line").removeClass("new").addClass("old");
$(".main").append(...);
}
});
当我第一次给出输入“ls”时,一切都按预期运行,但是当第二次运行时,开关转到默认情况。 console.log(args[0])
在第3行返回的值仍然相同。
难道我做错了什么?
编辑:
如果你检查args[0]
的长度,你会看到它第一次是2个字符,第二次是3个字符。
在检查案例之前修改您的开关以修剪任何空白区域,它将起作用:
switch(args[0].trim())
看到这个https://jsfiddle.net/wkjy7du2/。
var args = command.split(" ");
var arg =args[0];
var res;
switch(arg.trim()) {
case "ls":
trim()
如果你添加console.log({command});
,你会看到从第二次调用函数开始,command
的值以\r
(回车符)开头。
作为一般规则,你应该在将command
分割成单词之前修剪qazxswpoi,否则即使在第一次调用时它的值以空格开头也会失败。