Я написал код JS, чтобы определить, является ли строка палиндромом или нет. Но вывод остается включенным менее секунды, а затем исчезает. Я знаю, что этот тип вопросов задавался раньше, и я попробовал решение, в котором говорилось, что нужно добавить «return false», но оно не работает для меня.
function palindrome(str) {
var str1 = str.split("");
var str2 = str1.reverse();
var str3 = str2.join("");
return str3;
}
function checkpalin() {
var x = document.getElementById("pform").value;
var st = palindrome(x);
var flag = st.localeCompare(x);
if (flag === 0)
document.getElementById('demo').innerHTML = "Given number is a palindrome";
else
document.getElementById('demo').innerHTML = "Not palindrome";
return false;
}<form>
Please enter a string:<br>
<input type = "text" name = "str" id = "pform" onchange = "return checkpalin()"><br>
</form>
<p id = "demo"></p>На странице должна происходить какая-то обратная передача. Удалите форму и попробуйте еще раз.



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


Потому что это у вас есть в форме. Попробуй это
function palindrome(str) {
var str1 = str.split("");
var str2 = str1.reverse();
var str3 = str2.join("");
return str3;
}
function checkpalin() {
var x = document.getElementById("pform").value;
var st = palindrome(x);
var flag = st.localeCompare(x);
if (flag === 0)
document.getElementById('demo').innerHTML = "Given number is a palindrome";
else
document.getElementById('demo').innerHTML = "Not palindrome";
return false;
}<!DOCTYPE html>
<html>
<body>
Please enter a string:<br>
<input type = "text" name = "str" id = "pform" onchange = "return checkpalin()"><br>
<p id = "demo"></p>
</body>
</html>Вы также можете использовать oninput вместо onchange, чтобы он обновлялся при вводе текста в текстовое поле.
function palindrome(str) {
var str1 = str.split("");
var str2 = str1.reverse();
var str3 = str2.join("");
return str3;
}
function checkpalin() {
var x = document.getElementById("pform").value;
var st = palindrome(x);
var flag = st.localeCompare(x);
if (flag === 0)
document.getElementById('demo').innerHTML = "Given number is a palindrome";
else
document.getElementById('demo').innerHTML = "Not palindrome";
return false;
}<!DOCTYPE html>
<html>
<body>
Please enter a string:<br>
<input type = "text" name = "str" id = "pform" oninput = "return checkpalin()"><br>
<p id = "demo"></p>
</body>
</html>Пример, приведенный OP, работает нормально, ничего не меняя
@luca Отправляет форму
@Luca Он означает, что он не должен обновляться при нажатии клавиши ввода
Событием по умолчанию при нажатии клавиши Enter в одном поле формы является отправка формы.
В вашем коде возврат интересен только для события отправки.
Просто предотвратите дефолт при отправке или удалите теги формы
function palindrome(str) {
var str1 = str.split("");
var str2 = str1.reverse();
var str3 = str2.join("");
return str3;
}
document.getElementById("myForm").onsubmit = function(e) {
e.preventDefault();
var x = document.getElementById("pform").value;
var st = palindrome(x);
var flag = st.localeCompare(x);
document.getElementById('demo').innerHTML = flag ? "Not palindrome" : "Given string is a palindrome";
}<form id = "myForm">
Please enter a string and hit enter:<br>
<input type = "text" name = "str" id = "pform"><br>
</form>
<p id = "demo"></p>
Если вместо этого вы используете
oninput, он будет обновляться во время набора текста.