在下面的代码中,我正在尝试输出您键入的日期和打印文本。日期时间与显示时一样,但是当我实现打印功能时,它会输出“ime”。
当您键入“print”以及之后的其他内容时,打印功能将起作用。例如,输入“print hi there”输出“hi there”。任何反馈都将非常感激。
<html>
<body>
<div id="out" name="out"></div>
<script type="text/JavaScript">
function theProcess(){
alert("> Your typed "+enter);
}
function datetime(){
var enter = "";
var currentdate = new Date();
var datetime = "Date and Time today: " + currentdate.getDate() + "/"
+ (currentdate.getMonth()+1) + "/"
+ currentdate.getFullYear() + " @ "
+ currentdate.getHours() + ":"
+ currentdate.getMinutes() + ":"
+ currentdate.getSeconds();
if (enter == 'datetime')
{
alert(datetime)
}
else
{
alert(" You typed, "+enter);
}
}
</script>
<script type="text/JavaScript">
function addOutput(s){
document.getElementById("out").innerHTML=document.getElementById("out").innerHTML+s+"\n";
}
// turns a string into an array and displays it
var enter = '';
enter = prompt('enter text')
var str = "print a b c d";
var list = str.split(" ");
for(i=0; i<list.length;i++){
var message=list[i];
switch(message){
case "print":
alert(message.substring(5))
}
}
</script>
</body>
</html>
答案 0 :(得分:0)
var str = "print a b c d";
// print every single argument after "print" with a single alert
var list = str.split(" ");
for(i=1; i<list.length; i++){
var message=list[i];
switch(list[0]){
case "print":
alert(message)
}
}
// print all arguments after "print" with a single alert
// var list = str.split(" ");
if(list[0] == "print") {
list.shift();
alert(list.join(" "));
}
答案 1 :(得分:0)
让我们分解这个命令解析器。您将str拆分为空格中的部分:
var str = "print a b c d";
var list = str.split(" ");
现在列表包含数组["print", "a", "b", "c", "d"]
。接下来,您将循环遍历数组中的每个元素,并将元素放入消息变量中。
for(i=0; i<list.length;i++){
var message=list[i];
然后你按照每个部分的命令行事:
switch(message){
case "print":
如果我理解正确,这是错误的。你不想在这里循环。摆脱循环,只需switch (list[0]) {
对于打印命令,您打印message.substring(5)
。你似乎弄乱了你的变量。此时message
只是“打印”,因此message.substring(5)
将为空。你可能意味着str.substring(6)
(修剪掉“打印”)。