«Undefined» появляется на стороне документа после срабатывания окна оповещения - PullRequest
0 голосов
/ 24 марта 2020

Я создаю веб-сайт, где, если вы нажмете кнопку, появится окно с предупреждением. Но после того, как я нажму кнопку, на стороне моего документа появится слово «неопределенный».

То, как я это делал, выглядит следующим образом:


<button onclick="run()">Click me</button>
<span id="no"></span>
<script>
function no() {
document.getElementById("no").innerHTML = alert("This is an alert box");
}
</script>

По какой-то причине после того, как я нажимаю кнопку, в документе появляются слова «undefined». Как вы можете видеть, запускаете ли вы фрагмент кода, как только вы нажмете одну из кнопок «купить», если вы прокрутите вниз до нижней части страницы продукта, вы увидите слово «undefined» слева. Я извиняюсь, что это так грязно, что не предназначено для запуска в создателе фрагмента переполнения стека.

function purchase() {
  document.getElementById("no").innerHTML = alert("Sorry, but we're all sold out! Try again later.");
}
image

Есть ли способ предотвратить это без изменения моего метода?

Ответы [ 3 ]

3 голосов
/ 24 марта 2020

Метод alert в javascript не возвращает значения, которое в javascript равно undefined.

Вы устанавливаете span inner html на это значение

document.getElementById("no").innerHTML = alert("Sorry, but we're all sold out! Try again later.");

Мне любопытно, что, по-вашему, сделала эта строка.

1 голос
/ 24 марта 2020

Почему вы хотите установить внутренний HTML элемента для оповещения?

function purchase() {
  alert("Sorry, but we're all sold out! Try again later.");
}
image

Это решит вашу проблему.

0 голосов
/ 24 марта 2020

В javascript любая неопределенная переменная (или свойство) имеет значение undefined (это тип, такой как String, Object, Date, null, et c). Когда этот результат преобразуется в строку, он отображается как фактическая строка «undefined». Попробуйте это в консоли вашего браузера, чтобы почувствовать это:

console.log(foo);
console.log(window.foo);
console.log(String(window.foo));

Когда вы присваиваете свойство innerHTML вашего div результату функции оповещения (которая не ' t не возвращает ничего и, следовательно, значение undefined), вы вводите его в строку «undefined» и устанавливаете его как внутреннее HTML элемента div. Каково ваше реальное намерение?

...