大家好!有一个问题:给定一个字符串。将此行中每个单词的第一个字符大写。为此,请创建一个 ucfirst 辅助函数,该函数将接受一个字符串,将该字符串的第一个字符大写,然后返回首字母大写的字符串。
必须通过单独分离每个函数并将它们声明在一个主函数中来解决该任务。我的实现是这样的:
<input type="text" class="input">
let input = document.querySelector('.input');
input.addEventListener('blur', changeFirstSymbol);
changeFirstSymbol(input.value);
function changeFirstSymbol(str) {
getString(ucFirst(getArrayFromString(str)));
}
function getArrayFromString(str) {
arr = str.split(' ');
return arr;
}
function ucFirst(arr) {
let newArr = [];
for (let i = 0; i < arr.length; i++) {
newArr[i] = arr[i].substr(0, 1).toUpperCase() + arr[i].substr(1);
}
return newArr;
}
function getString(arr) {
str = arr.join(' ');
return str;
}
控制台抛出以下错误:
Uncaught TypeError: str.split is not a function (main.js:12)
at getArrayFromString (main.js:12)
at HTMLInputElement.changeFirstSymbol (main.js:8)
让我知道您是否有任何想法?
一般来说,几乎所有内容都是正确的,只有少量编辑。
错误在
input.addEventListener('blur', changeFirstSymbol);. 关键是您没有将changeFirstSymbol参数传递给函数。请参阅一个工作示例。