将第一个字符转换为大写时出错

use*_*958 2 javascript

我想将所有 span 标签的第一个字符转换为大写,但出现错误:TypeError: a[0].toUpperCase is not a function。

<div id="test">
  <h1>
    <span>test</span> <span>test</span> <span>test</span>
   </h1>
</div>
Run Code Online (Sandbox Code Playgroud)

var x = document.getElementById("test");

function capital(a)
{
    return a[0].toUpperCase() + a.slice(1);
}
Run Code Online (Sandbox Code Playgroud)

var test=x.getElementsByTagName("span");
var b=capital(test)
console.log(b)
Run Code Online (Sandbox Code Playgroud)

Cuo*_*goc 5

getElementsByTagName("span")返回一个HTMLCollection. 所以如果你想使用toUpperCase(),你需要遍历它并调用innerText.

var x = document.getElementsByTagName("span");
console.log(x)

function capital(a){
    return a[0].toUpperCase() + a.slice(1);
}

for(el of x) {
  el.innerText = capital(el.innerText);
}
Run Code Online (Sandbox Code Playgroud)
<div id="test">
        <h1>
          <span>test</span> <span>test</span> <span>test</span>
        </h1>
      </div>
Run Code Online (Sandbox Code Playgroud)