JavaScript while循环不起作用

时间:2014-11-14 20:36:12

标签: javascript html while-loop

我一直在尝试开发javascript以识别名称,显示名称,长度和字母以及它们出现的位置,但我似乎无法让while循环工作。有人可以帮帮我,谢谢。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html >
<head>
    <title>
        javascript
    </title>
    <script>
        function displayName(){

        var str = prompt("enter your name:");
        var len = str.length;
        var chara = str.charAt(0);
        var n = chara.indexOf(0);


        while(chara <= len){
                document.write("<br>the letter " + chara + " is number " + n);
                chara++;
            }

           document.write("the name entered is: " + str + "<br></br>" + "the length is " +  len);

            }

     </script>


</head>
  <body>

     <script>
      displayName();    
     </script>

    </body>
</html>    

5 个答案:

答案 0 :(得分:1)

你的循环正在使用错误的迭代器。

function displayName(){

    var str = prompt("enter your name:");
    var len = str.length;
    var chara = 0;

    while(chara < len){
        document.write("<br>the letter " + str.charAt(chara) + " is number " + (chara + 1));
        chara++;
    }

    document.write("<br/>the name entered is: " + str + "<br></br>" + "the length is " +  len);


}

答案 1 :(得分:1)

您将chara设置为第一个字符,&#34; A&#34;例如。然后你尝试做while A <= 4(假设长度是4),这永远不会是真的。 chara需要成为一个数字才能发挥作用。

答案 2 :(得分:0)

看起来您正在将chara设置为返回字符串的第一个字符。尝试将其设置为0

var chara = 0;

看看是否有效。

答案 3 :(得分:0)

您正在递增错误的变量。您应该增加chara并重置n以指向字符串的下一个字符,而不是递增chara。您还未正确使用indexOf - 只需将n = 0;设置为以

开头即可

答案 4 :(得分:0)

您的循环正在将字符(名称的第一个字符)与数字(名称的长度)进行比较。有几种方法可以完成您要完成的任务。

如果你想继续使用while循环,你应该跟踪一个充当计数器的变量,它计算你所在循环的迭代。这将取代chara变量。

here is a live example

function displayName(){

    var str = prompt("enter your name:");
    var len = str.length;
    var count = 0;


    while(count < len){
        document.body.innerHTML += "<br>the letter " + str.charAt(count) + " is number " + (count+1);
        count++;
    }

    document.body.innerHTML += "<br>the name entered is: " + str + "<br></br>" + "the length is " +  len;

}

我已将document.write()的调用替换为innerHTML参数,因为它被视为更好的做法,但您可以使用其中任何一种。

顺便说一下,为这个任务使用for循环会更加语义化。