JS:将输入的每个单词的首字母大写

JS: Capitalize first letter of every word entered into input

下面的html & javascript 需要在输入字段中输入文本,并在点击提交时将每个单词的首字母大写。它无法正常工作,我想知道我哪里出错了?

<script>
function myFunction() {
    var words;
    words = str.split(" "); 
    for (var i=0 ; i < words.length ; i++){ 
      var testwd = words[i]; 
      var firLet = testwd.substr(0,1); 
      var rest = testwd.substr(1, testwd.length -1) 
      words[i] = firLet.toUpperCase() + rest 
     } 
   document.write( words.join("demo")); 
}
</script>
<!DOCTYPE html>
<html>
<body>

<p>Book Title</p>

<input id="words" value="18" />

<button onclick="myFunction()">Try it</button>

<p id="demo"></p>
 
</body>
</html>

我正在寻找一个纯粹的 Javascript 解决方案。

var words;替换为var words = document.getElementById("words");

//快速帮助

你需要做这样的事情:

 function myFunction(){
            var words = document.getElementById("words").value.split(" ");
            var content = "";
            for (var i = 0; i < words.length; i++) {
                content += words[i].substr(0, 1).toUpperCase() + words[i].substr(1, words[i].length - 1);
                if(i<words.length-1)
                    content += " ";
            }
            document.getElementById("demo").innerText = content;
}

类似下面的内容?

function myFunction() {
  document.getElementById('target').value = document.getElementById('target').value.replace(/\b[a-z]/g, function(a) { return a.toUpperCase(); });
};
<input id="target" />
<button id="do" onclick="myFunction()">Go!</button>

这是如何运作的

所以首先我们检测按钮何时被点击。然后我们将值设置为其原始值但是...我们得到一个单词的第一个字母,然后将其大写。

就这么简单!

你很接近!继续。

首先 - 要使用本机 Javascript 从文本框中获取值,您需要使用

document.getElementById("words").value;

您应该将其设置为 words 变量。我没有看到 str 的用途,但实际上您可以在 str.split(" ");

处将其替换为 words

这里是完整的示例代码: (请记住,使用 document.write() 你是在整个页面上书写......通常人们只是将值插入其他地方,所以你仍然可以在显示动态输出的同时维护页面)

<!DOCTYPE html>
<html>
<body>
<script>
function myFunction() {
    var words = document.getElementById('words').value;
    words = words.split(" "); 
    for (var i=0 ; i < words.length ; i++){ 
      var testwd = words[i]; 
      var firLet = testwd.substr(0,1); 
      var rest   = testwd.substr(1, testwd.length -1) 
      words[i]   = firLet.toUpperCase() + rest 
     } 
   document.write( words.join("demo")); 
}
</script>
<p>Book Title</p>

<input id="words" value="18" />

<button onclick="myFunction()">Try it</button>

<p id="demo"></p>

</body>
</html>

使用以下方法将每个拆分的单词传递到您的 for 循环中并再次与“”连接:

function capitalizeFirstLetter(string) {
    return string.charAt(0).toUpperCase() + string.slice(1);
}

检查Fiddle:http://jsfiddle.net/w7gceumz/