仅显示字符串的一部分

时间:2013-10-17 15:58:37

标签: javascript

在下面的代码中,我正在尝试输出您键入的日期和打印文本。日期时间与显示时一样,但是当我实现打印功能时,它会输出“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>

2 个答案:

答案 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)(修剪掉“打印”)。