MF *_*men 14 javascript string textarea switch-statement
switch
分析字符串变量时,我的声明无法正常工作.
输出和输入都是<textarea>
.
HTML
<form name="interface">
<textarea name="output" rows="20" cols="100"></textarea><br>
<textarea name="input" rows="1" cols="100" onKeyDown="thinkInput(event);"></textarea>
</form>
Run Code Online (Sandbox Code Playgroud)
JavaScript的
function thinkInput(e)
{
if (e.keyCode == 13)
{
sInput = document.interface.input.value;
document.interface.output.value += sInput;
aInput = sInput.split(" ");
switch (aInput[0])
{
case "say":
textOut("You say \""+sInput.substring(aInput[0].length + 1)+"\"");
break;
case "move":
move(aInput[1]);
break;
default:
thinkFail();
break;
}
document.interface.input.value = null;
alert(aInput[0]);
}
}
Run Code Online (Sandbox Code Playgroud)
我最后可以看到alert()
案件是"说"或"移动".
我第一次尝试"说mudkipz"或"四处走动",一切都按照我想要的方式工作,但在那之后我输入的所有内容都会thinkFail()
激发.
一个问题是您没有使用该var
语句来定义变量。这意味着它们成为“隐式全局变量”,并通过您的不同调用保留。
var sInput = document.interface.input.value;
var aInput = sInput.split(" ");
document.interface.output.value += sInput;
Run Code Online (Sandbox Code Playgroud)
为了进一步诊断问题,您可以使用浏览器中的调试器工具插入断点,并逐步监视 的值sInput
并定位问题。