Я хочу, чтобы пользователю было показано сообщение, если адрес электронной почты введен неправильно.
HTML
<p>Email: <input type = "email" id = "email" onblur = "validateEmail()"
required>
<p id = "emailMessage"></p>
Javascript
function validateEmail(email){
var regEx = /\S+@\S+/;
var result = regEX.test(email);
if (result = true)
document.getElementById("emailMessage").innerhtml = ""
else (result = false)
document.getElementById("emailMessage").innerhtml = "Please enter a valid
email address"
}
попробуйте if (результат). Вы делаете результат равным истине.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


document.getElementById("emailMessage").innerHTML = "Please enter a valid
email address"
// использовать innerHTML, а не innerhtml, вот в чем проблема
В его коде еще больше проблем. Даже не это. Этот ответ бесполезен ...
Нет, это не так. Вы отправили новый ответ. И новый ответ по-прежнему полностью недействителен.
Пожалуйста, проверьте свой код самостоятельно и посмотрите, будет ли он работать. Спойлер: нет.
Вы вообще знаете, что означает спойлер в этом контексте? ;) Имеется в виду какая-то подсказка, тут ничего грубого. И в вашем контексте это будет означать, что я спойлер, а не вы. ;) И это никак не связано с тем, разместил я вопрос или нет. Ваши оба ответа просто неверны, никак не сработают. Если вы приложите больше усилий к своим ответам, вы, вероятно, сами увидите это. Я не уверен, почему вы предпочли бы мне игнорировать, потому что я не создатель, вместо того, чтобы исправлять ваши ответы ... Я ушел, ваш выбор.
//correct code
function validateEmail(email)
{
var regEx = /\S+@\S+/;
var result = regEX.test(email);
if (result == true)
document.getElementById("emailMessage").innerHTML = ""
else (result == false)
document.getElementById("emailMessage").innerHTML = "Please enter a valid email address"
}
В вашем подходе много проблем. Поскольку вы, кажется, новичок в этом, я расскажу вам, что не так, шаг за шагом:
result = true и result = false установят значение результата в логическое значение. Условие должно быть == или ===. Или в вашем случае просто используйте переменную result, которая уже является логической из-за результата .test().innerHTML вместо innerhtml.regEx, а не regEX.email не является параметром функции по умолчанию, вам необходимо передать this функции, чтобы она была доступна.email.value, гайку просто на email, потому что это всего лишь элемент.else не может иметь условия для проверки, если вы хотите, чтобы вам нужно было использовать else if, но здесь это не нужно.function validateEmail(email) {
var regEx = /\S+@\S+/;
var result = regEx.test(email.value);
if (result) {
document.getElementById("emailMessage").innerHTML = "";
}
else {
document.getElementById("emailMessage").innerHTML = "Please enter a valid email address";
}
}<p>Email:</p>
<input type = "email" id = "email" onblur = "validateEmail(this)" required>
<p id = "emailMessage"></p>
Возможный дубликат Как проверить адрес электронной почты в JavaScript?