我正在为自己的网站编写一个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”时,一切都按预期运行,但是第二次运行时,开关将转为默认情况。第3行的console.log(args[0])
返回的值仍然相同。
我做错什么了吗?
修改:
答案 0 :(得分:2)
如果检查args[0]
的长度,您会发现它第一次是2个字符,第二次是3个字符。
在检查大小写之前修改开关以修剪所有空白,它将起作用:
switch(args[0].trim())
答案 1 :(得分:1)
请参阅此https://jsfiddle.net/wkjy7du2/。
var args = command.split(" ");
var arg =args[0];
var res;
switch(arg.trim()) {
case "ls":
trim()
一起使用答案 2 :(得分:1)
如果添加console.log({command});
,则会看到从函数的第二次调用开始,command
的值以\r
(回车符)开头。
通常,应在将command
分割成单词之前对其进行修剪,否则,即使在第一次调用时,其值以空格开头也会失败。