The Code
JavaScript
function getValues(){
let userString = document.getElementById("userString").value;
//check palindrome
let returnObject = checkForPalindrome(userString);
//display message
displayMessage(returnObject);
}
function checkForPalindrome(userString){
userString = userString.toLowerCase();
let regex = /[^a-z0-9]/gi;
userString = userString.replace(regex,"");
let revString = [];
let returnObject = {};
for (let i = userString.length -1; i >= 0; i--){
revString += userString[i];
}
if (revString == userString){
let check =
`<i class="fas fa-check" style="color: green; font-size="larger;"></i>`;
returnObject.header = `${check} PALINDROME DETECTED! ${check}`;
returnObject.msg = ` IS a palindrome of `
}
else{
let xMark =
`<i class="fa-solid fa-x" style="color: red; font-size="larger;></i>`;
returnObject.header = `${xMark} no palindrome found ${xMark}`;
returnObject.msg = ` is NOT palindrome of `
}
returnObject.original = userString;
returnObject.reversed = revString;
return returnObject;
}
function displayMessage(returnObject){
document.getElementById("alertHeader").innerHTML = returnObject.header;
document.getElementById("msg").innerHTML =
`<strong>${returnObject.reversed}</strong>
${returnObject.msg}
<strong>${returnObject.original}</strong>`;
document.getElementById("alert").classList.remove("invisible");
}
This code displays without error thanks to: https://tohtml.com
An explanation:
The code is structured into 3 functions:
getValues()
This function initializes the program using 3 statements:
- grab the user's input from the page
- create the object we'll be using in the code
- call the display message when it is time
checkForPalindrome()
The algorithm:
- set userString to Lower Case characters
- set a regex (regular expressions) string
- set userString to omit unwanted characters
- intialize an array: revString
- initialize an object to be returned: returnObject
- decrementally iterate through the userString
- quasi append [i] to revString
- if statement:
- if palindrome, set strings on object one way
- if not, set strings on object another way
- set userString and revString to be properties of returnObject
- return the returnObject for use in another function
displayMessage()
This function uses 3 statements to get the output on the page:
- pass data to the page for the alert header
- alertHeader is set with value from returnObject: check or x-mark
- pass data to the page for the alert message
- msg is set 'returnObject.reversed' + 'returnObject.msg' + 'returnObject.original'
- programmatically sets "IS" or "is NOT" to the alert message and sticks it between the original and reversed sets of characters
- reveal the alert