#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:
Я предполагаю, что у вас есть две проблемы:
-
Эта строка фактически ничего не делает
text == message;
Поскольку вы использовали оператор равенства (
==
) вместо оператора присваивания (=
), это было бы эквивалентно записиfalse;
-
В вашем цикле for есть строка с недопустимым синтаксисом
message.length[x]
Это должно приводить к ошибкам, потому что вы пытаетесь ввести index (
[]
) в свойство stringlength
, которое является целым числом, а не массивом. Этот синтаксис можно использовать только с объектами и массивами. В соответствии с вашими требованиями вы должны добавлять саму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>
Комментарии:
1. Является ли change.innerHTML = message «<br>»; эффективным?
2. @PixelsTech: Нет, это действительно не так. На самом деле довольно медленно, но если предположить, что верхняя граница цикла будет относительно небольшим числом, это не должно иметь большого значения. Я все равно немного меняю свой код.