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

时间:2015-04-10 04:26:18

标签: javascript join split

以下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解决方案。

5 个答案:

答案 0 :(得分:1)

你关闭了!继续。

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

document.getElementById("words").value;

您应该将其设置为words变量。我没有看到str被用于什么,但实际上您可以在words

上用str.split(" ");替换它

以下是工作代码的完整示例: (请记住,使用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>

答案 1 :(得分:0)

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

//快速帮助

答案 2 :(得分:0)

你需要做这样的事情:

 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;
}

答案 3 :(得分:0)

如下所示?

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

如何运作

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

就这么简单!

答案 4 :(得分:0)

使用以下方法传递for循环中的每个拆分单词,并使用“”再次合并:

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

检查小提琴:http://jsfiddle.net/w7gceumz/