我没有此js代码的任何输出

时间:2018-08-05 07:35:42

标签: javascript web

这是代码-

    

    <input type="text" id="field">
    <input type="button" onclick="test()">
    <p id="demo"></p>

    <script type="text/javascript">
        function test(){
            var a = document.getElementById("field").value;
            var b = a.split(" ");
            for(var i=0; i<b.length; i++){
                var x[i] = 0;
                for(var j=0; j<b[i].length; j++){
                    if(b[i][j] == 'e' || b[i][j] == 'a' || b[i][j] == 'i' || b[i][j] == 'o' || b[i][j] == 'n' || b[i][j] == 'r' || b[i][j] == 't' || b[i][j] == 'l' || b[i][j] == 's' || b[i][j] == 'u'){
                        x[i]++;
                    }
                    else if(b[i][j] == 'd' || b[i][j] == 'g'){
                        x[i]+=2;
                    }
                    else if(b[i][j] == 'b' || b[i][j] == 'c' || b[i][j] == 'm' || b[i][j] == 'p'){
                        x[i]+=3;
                    }
                    else if(b[i][j] == 'f' || b[i][j] == 'h' || b[i][j] == 'w' || b[i][j] == 'y'){
                        x[i]+=4;
                    }
                    else if(b[i][j] == 'k'){
                        x[i]+=5;
                    }
                    else if(b[i][j] == 'j' || b[i][j] == 'x'){
                        x[i]+=8;
                    }
                    else{
                        x[i]+=10;
                    }
                }
            }
            document.getElementById("demo").innerHTML = x[0];
            /*if(x[0] > x[1]){
                document.getElementById("demo").innerHTML = b[0];
            }
            else{
                document.getElementById("demo").innerHTML = b[1];
            }*/
        }
    </script>
</body>

此代码没有任何输出。我在这里打印x [0],但什么也没得到。请帮我这个代码。这段代码有什么问题。我尝试了一切。

5 个答案:

答案 0 :(得分:1)

请尝试

function test(){
        var a = document.getElementById("field").value;
        var b = a.split(" "),x;
        var x =[];
        for(var i=0; i<b.length; i++){
            x[i] = 0;
            for(var j=0; j<b[i].length; j++){
                if(b[i][j] == 'e' || b[i][j] == 'a' || b[i][j] == 'i' || b[i][j] == 'o' || b[i][j] == 'n' || b[i][j] == 'r' || b[i][j] == 't' || b[i][j] == 'l' || b[i][j] == 's' || b[i][j] == 'u'){
                    x[i]++;
                }
                else if(b[i][j] == 'd' || b[i][j] == 'g'){
                    x[i]+=2;
                }
                else if(b[i][j] == 'b' || b[i][j] == 'c' || b[i][j] == 'm' || b[i][j] == 'p'){
                    x[i]+=3;
                }
                else if(b[i][j] == 'f' || b[i][j] == 'h' || b[i][j] == 'w' || b[i][j] == 'y'){
                    x[i]+=4;
                }
                else if(b[i][j] == 'k'){
                    x[i]+=5;
                }
                else if(b[i][j] == 'j' || b[i][j] == 'x'){
                    x[i]+=8;
                }
                else{
                    x[i]+=10;
                }
            }
        }
       document.getElementById("demo").innerHTML = x[0];
        /*if(x[0] > x[1]){
            document.getElementById("demo").innerHTML = b[0];
        }
        else{
            document.getElementById("demo").innerHTML = b[1];
        }*/
    }

答案 1 :(得分:0)

您在for循环内声明了x数组,因此在它之外不可用。尝试将声明移出循环。

答案 2 :(得分:0)

此问题是由错误的数组声明var x[i] = 0;引起的

将其更改为以下内容:var x = new Array();
然后通过x[index]

访问每个索引 参见https://www.w3schools.com/js/js_arrays.asp

答案 3 :(得分:0)

此行本身是一个问题var x[i] = 0;,这不是声明数组的方式。 var x = [];的操作方法如下,但是由于您要将第一个元素设置为0,因此可以执行此操作var x = [0];,只需替换此行,代码就可以工作。

还可以在以后遇到错误时检查您的代码问题,在浏览器上按F12键打开开发人员工具,然后查看控制台窗口/标签,它将准确告诉您代码中的问题。

编辑

再次阅读您的代码后,我发现@Ankul Chaudhary的答案可能是您想要实现的,因为在您的代码注释中,您打算比较数组x中的项目,在他的解决方案中他声明了数组x不在循环外,它不会重置其值并将所有计算出的值保留在数组内,以便您稍后可以在代码中访问

答案 4 :(得分:0)

尝试一下:

        function test(){
            var a = document.getElementById("field").value;
            console.log(a);
            var b = a.split(" ");
            console.log(b);
            for(var i = 0; i < b.length; i++) {
                var x = [];
                x[i] = 0;
                for(var j=0; j<b[i].length; j++){
                    if(b[i][j] == 'e' || b[i][j] == 'a' || b[i][j] == 'i' || b[i][j] == 'o' || b[i][j] == 'n' || b[i][j] == 'r' || b[i][j] == 't' || b[i][j] == 'l' || b[i][j] == 's' || b[i][j] == 'u'){
                        x[i]++;
                    }
                    else if(b[i][j] == 'd' || b[i][j] == 'g'){
                        x[i]+=2;
                    }
                    else if(b[i][j] == 'b' || b[i][j] == 'c' || b[i][j] == 'm' || b[i][j] == 'p'){
                        x[i]+=3;
                    }
                    else if(b[i][j] == 'f' || b[i][j] == 'h' || b[i][j] == 'w' || b[i][j] == 'y'){
                        x[i]+=4;
                    }
                    else if(b[i][j] == 'k'){
                        x[i]+=5;
                    }
                    else if(b[i][j] == 'j' || b[i][j] == 'x'){
                        x[i]+=8;
                    }
                    else{
                        x[i]+=10;
                    }
                }
               document.getElementById("demo").innerHTML = x[b.length -1];
            } 
        }
    <input type="text" id="field">
    <input type="button" onclick="test()">
    <p id="demo"></p>