0

在下面的代码中,我试图输出您输入的日期和打印文本。日期时间按其显示的方式工作,但是当我实现打印功能时,它输出“ime”。

当您键入“打印”以及之后的其他内容时,打印功能就会起作用。例如,输入“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>
4

2 回答 2

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(" "));
        }
于 2013-10-17T16:20:44.680 回答
0

让我们分解这个命令解析器。您将 str 在空格处拆分为多个部分:

var str = "print a b c d";
var list = str.split(" ");

现在 list 包含数组["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)(修剪掉“打印”)。

于 2013-10-17T16:21:14.350 回答