#javascript #html
Вопрос:
введите описание изображения здесь
введите описание изображения здесь
Как заставить соблюдать поведение заглавного слова?
исходный код : enter code here
document.getElementById("btnReverse").onclick = function () {
reverse();
};
String.prototype.replaceAt = function (index, replacement) {
if (index >= this.length) {
return this.valueOf();
}
return this.substring(0, index) replacement this.substring(index 1);
};
function reverseWord(word) {
let wordLength = word.length;
let reversedWord = word;
for (let j = 0; j < wordLength / 2; j ) {
let temp = reversedWord[j];
reversedWord = reversedWord.replaceAt(j, word[wordLength - 1 - j]);
reversedWord = reversedWord.replaceAt(wordLength - 1 - j, temp);
}
return reversedWord;
}
function reverse() {
let text = document.getElementById("text").value;
let splittedText = text.split(" ");
let reversedWords = [];
for (let i = 0; i < splittedText.length; i ) {
let word = splittedText[i];
let reversedWord = reverseWord(word);
reversedWords.push(reversedWord);
}
document.getElementById("demo").innerHTML = reversedWords.join(" ");
}`enter code here`
Ответ №1:
Эта функция повторно заглавляет перевернутое слово:
function reCapitalize(word) {
// Check if last letter is an uppercase
// If so, return the word with first letter converted to capital
if (word[word.length - 1] === word[word.length - 1].toUpperCase())
return word[0].toUpperCase() word.toLowerCase().substring(1, word.length);
// return word unchanged
return word;
}
Итак, ваша обратная функция будет выглядеть так:
function reverseWord(word) {
let wordLength = word.length;
let reversedWord = word;
for (let j = 0; j < wordLength / 2; j ) {
let temp = reversedWord[j];
reversedWord = reversedWord.replaceAt(j, word[wordLength - 1 - j]);
reversedWord = reversedWord.replaceAt(wordLength - 1 - j, temp);
}
return reCapitalize(reversedWord);
}
Комментарии:
1. Это перезаписывает обратную функцию Mr? Если вы действительно, это решение, которое я пробовал, но не сработало в моем коде, спасибо за ответ Mr.
Ответ №2:
Измените нижеприведенную строку метода reverse() и используйте textContent
вместо значения.
пусть text = document.getElementById(«текст»).textContent;
document.getElementById("btnReverse").onclick = function () {
reverse();
};
String.prototype.replaceAt = function (index, replacement) {
if (index >= this.length) {
return this.valueOf();
}
return this.substring(0, index) replacement this.substring(index 1);
};
function reverseWord(word) {
let wordLength = word.length;
let reversedWord = word;
for (let j = 0; j < wordLength / 2; j ) {
let temp = reversedWord[j];
let rightChar = word[wordLength - 1 - j];
if(j === 0 amp;amp; wordLength > 1 amp;amp; word[j].toUpperCase() === word[j]) {
temp = temp.toLowerCase();
rightChar = rightChar.toUpperCase();
}
reversedWord = reversedWord.replaceAt(j, rightChar);
reversedWord = reversedWord.replaceAt(wordLength - 1 - j, temp);
}
return reversedWord;
}
function reverse() {
let text = document.getElementById("text").textContent;
let splittedText = text.split(" ");
let reversedWords = [];
for (let i = 0; i < splittedText.length; i ) {
let word = splittedText[i];
let reversedWord = reverseWord(word);
reversedWords.push(reversedWord);
}
document.getElementById("demo").innerHTML = reversedWords.join(" ");
}
<html>
<head></head>
<body>
<div>
<button id="btnReverse">Reverse</button>
<div id="text">I am A Great human</div>
<div id="demo"></div>
</div>
</body>
</html>
Комментарии:
1. Картинки i.stack.imgur.com/19pZe.jpg Извините ранее, мистер, намерение при вводе в форму вывода вышло в соответствии с запрошенной заглавной буквой, например, в примере на картинке выше, спасибо за ответ. Демонстрация: replit.com/join/jhnzimlcne-willyagustino
2. изменен код для обработки прописного регистра.