Многострочное оповещение в Javascript

Этот код

alert("Hello again! This is how we"+"\n"+"add line breaks to an alert box!");

не работает. Ошибка JavaScript-консоли Firefox JavaScript как "unterminated string literal" и указывает на "символ до \n. Я хочу запустить предупреждение с помощью многострочного текста. Нет jQuery.

Ответы

Ответ 1

Не тестировали, но это работает?

alert("Hello again! This is how we \n add line breaks to an alert box!");

Ответ 2

Это случилось со мной... точно. Мне нужно было изменить его на \\n вместо \n.

alert("Hello again! This is how we"+"\\n"+"add line breaks to an alert box!");

Ответ 3

Добавление изменений \n в \\n должно работать, если вы рендерите серверы оповещений (то есть: на веб-сайте), но если вы используете клиентскую часть (то есть: тестирование и т.д.), то просто \\n не будет работать Работа. Например, попробуйте запустить следующие строки на этом сайте.

alert("Hello again! This is how we"+"\n"+"add line breaks to an alert box!");

или

 alert("Hello again! This is how we" +"\\n" +"add line breaks to an alert box!");

В jsfiddle первый работает, потому что он запускает его на стороне клиента, но если вы используете его на сервере, ему требуется двойная слэш (\\n). Я не уверен, почему это так, но я его протестировал много раз.

Надеюсь, это поможет!

Ответ 4

Вопрос старый, но я хочу дать ясный ответ и объяснить, почему это происходит для других, кто приходит сюда:

Прежде всего, нет ничего плохого в строке кода JavaScript в вопросе. Это абсолютно справедливо и не вызывает ошибки синтаксического анализа. Причиной проблемы в случае Vitalmax было, скорее всего, потому, что он/она не разместил дополнительный код, который окружал эту строку.

Вот пример в PHP, который показывает, почему JS-парсер жалуется на синтаксис:

<?php
  echo "alert('Hello again! This is how we\nadd line breaks to an alert box!');";
?>

Затем анализируемый серверный вывод (это то, что получает браузер):

alert("Hello again! This is how we
add line breaks to an alert box!");

В JavaScript строки не должны иметь реальные разрывы строк. Вместо этого они всегда должны быть экранированы (например:\n), поэтому браузер жалуется на "неиспользуемый строковый литерал" при реальном разрыве строки. Есть некоторые исключения из этого правила, например, для горизонтальных табуляторов (\ t). Итак, (в этом случае) вам нужно дважды избегать разрывов строк с помощью \\n. Поэтому, когда PHP анализирует и преобразует его из \\n в\n, JavaScript может преобразовать его из \n в [реальный разрыв строки].

Правильный пример PHP:

<?php
  echo "alert('Hello again! This is how we\\nadd line breaks to an alert box!');";
?>

Или:

<?php
  echo 'alert("Hello again! This is how we\nadd line breaks to an alert box!");';
?>

Во втором случае вам не нужно удваивать его, потому что экранированные символы в строках PHP с одинарными кавычками не декодируются (\n остается\n).

Ответ 5

Этот script работает для меня.

<script>
  alert("Hello. \r\n How are you?");
</script>

Ответ 6

error "missing ; before statement" Это говорит мне, что точка с запятой отсутствует над этой строкой кода. Обычным синтаксисом getchya являются операторы, которые не закрывают круглые скобки должным образом. Или фигурные скобки.

Ответ 7

Используйте одинарные кавычки.

alert("Hello again! This is how we"+'\n'+"add line breaks to an alert box!");

Ответ 8

<script>
alert("Hello. \n How are you?")
</script>

Ответ 9

Более функциональный способ, который я предложил бы, - определить вашу собственную функцию print() и забыть о пометке \\n для каждой строки вручную

//define
var print = new Function("var lines=arguments[0]+'\\n';; for(var i=1;i<arguments.length;i++){lines+=arguments[i]+'\\n';} alert(lines);");
    
//call
print("say","hello","to","javascript","this","is ","awesome");