Переменная подсказки не определена

#javascript #undefined #prompt

#javascript #не определено #подсказка

Вопрос:

Здесь у меня есть короткий скрипт, который предложит пользователю ввести сообщение и числовое значение, а затем повторить это сообщение заданное количество раз. Я продолжаю получать неопределенную переменную сообщения.

 <!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. = является присваиванием, == является равенством

Ответ №1:

Я предполагаю, что у вас есть две проблемы:

  1. Эта строка фактически ничего не делает

     text == message;
      

    Поскольку вы использовали оператор равенства ( == ) вместо оператора присваивания ( = ), это было бы эквивалентно записи

     false;
      
  2. В вашем цикле for есть строка с недопустимым синтаксисом

     message.length[x]
      

    Это должно приводить к ошибкам, потому что вы пытаетесь ввести index ( [] ) в свойство string length , которое является целым числом, а не массивом. Этот синтаксис можно использовать только с объектами и массивами. В соответствии с вашими требованиями вы должны добавлять саму message переменную.

Итак, имея все это в виду, вот мой взгляд на исправление вашего кода (исправлено с объяснением в комментариях):

 <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

Комментарии:

1. Является ли change.innerHTML = message «<br>»; эффективным?

2. @PixelsTech: Нет, это действительно не так. На самом деле довольно медленно, но если предположить, что верхняя граница цикла будет относительно небольшим числом, это не должно иметь большого значения. Я все равно немного меняю свой код.