Вывод функции Javascript .innerHTML только мигает

Я написал код 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>

Если вместо этого вы используете oninput, он будет обновляться во время набора текста.

Chris G 27.08.2018 18:34

На странице должна происходить какая-то обратная передача. Удалите форму и попробуйте еще раз.

Ashutosh 27.08.2018 18:36
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
2
116
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Потому что это у вас есть в форме. Попробуй это

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 Kiebel 27.08.2018 18:33

@luca Отправляет форму

mplungjan 27.08.2018 18:34

@Luca Он означает, что он не должен обновляться при нажатии клавиши ввода

Sheshank S. 27.08.2018 18:37

Событием по умолчанию при нажатии клавиши 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>

Другие вопросы по теме