Я заметил, что когда я буквально набираю слово test или dabd, он терпит неудачу, говоря «тест - это палиндром»; очевидно, это должно потерпеть неудачу. Я тестирую другие слова, такие как гоночный автомобиль, мадам, кошка, все они проходят. Я проверяю слева и справа персонажа и спускаюсь вниз, пока мы не достигнем середины. В чем может быть проблема?Неудачный тест для палиндрома JavaScript
function lengthChecker() {
var str = document.getElementById("str").value;
if (str.length > 10) {
alert("Sorry. Your input surpasses the 10 characters maximum. Please try again.")
return false;
} else if (str.length == 0) {
alert("Sorry. Your input is too short, and doesn't meet the 10 characters maximum. Please try again.")
return false;
}
palindrome(str);
}
function palindrome(str) {
var j = str.length;
if (/\s/.test(str)) {
alert("No spaces allowed.")
return false;
}
for (i = 0; i < j/2; i++) {
if (str[i] == str[j - 1 - i]) {
isPalindrome('', str);
return true;
} else {
notPalindrome(str);
return false;
}
}
}
function isPalindrome(e, str) {
alert(str + " is a Palindrome.");
}
function notPalindrome(str) {
alert(str + " isn't a Palindrome");
}
document.addEventListener("DOMContentLoaded", function(e) {
var el = document.getElementById("checkInput");
el.addEventListener("click", lengthChecker);
});
В 'palindrome()' вы всегда проверяете только первый символ и сразу возвращаетесь. – Nayuki
Кроме того, * lengthChecker * должен возвращать возвращаемое ему значение из * palindrome *. – RobG
Что вы имеете в виду? – user1776479