提示变量未定义

时间:2014-06-20 14:39:08

标签: javascript undefined prompt

这里我有一个简短的脚本,它会提示用户输入一个消息和一个数字值,然后重复该消息给定的次数。我继续收到消息变量的undefined。

<!doctype html>

<html lang="en">
<head>
<title>4</title>
</head>

<body>
<p id="change"> Launch this script</p>

<script type="text/javascript">   

    var x;
    var text = "";
    var message = prompt("Enter message here", "Leave a message");
    text == message;
    var number = parseInt(prompt("Enter a Value"));



    for (x=0; x<number; x++)
    {
        text += message.length[x] + "<br>";  
    }
    document.getElementById('change').innerHTML = text;
</script>
<br />

</body>
</html>

1 个答案:

答案 0 :(得分:3)

我假设您有两个问题:

  1. 此行无效

    text == message;
    

    因为您使用了等于运算符(==)而不是赋值运算符(=),所以它等同于编写

    false;
    
  2. 你的for循环中有一行无效语法

    message.length[x]
    

    这应该会给你错误,因为你试图将([])索引到字符串的length属性中,这是一个整数,而不是一个数组。该语法只能用于对象和数组。根据您的要求,您应该自己附加message变量。

  3. 所有这些都是考虑到这一点,这是我修改代码的注意事项(通过评论中的说明进行了更正):

    <script type="text/javascript">   
    
        // Don't need x here
    
        // Get your message, good
        var message = prompt("Enter message here", "Leave a message");
    
        // Set up an empty string variable to collect your concatenations. If you
        // set it to message right away, an input of 0 will actually produce
        // one line to be output, which is not 0!
        var text = '';
    
        // This is ok, but add a radix for good practice (it says this is
        // a base-10 value)
        var number = parseInt(prompt("Enter a Value"), 10);
    
        // You simply want to copy message number times, so just 
        // keep appending it to your text with a separator
        for (var x = 0; x < number; x++) { // Define x here ("var")
            text += message + "<br>";  
        }
    
        // Set the string
        document.getElementById('change').innerHTML = text;
    </script>
    

    jsFiddle Demo