在文本中的每个字符周围加一个空格



我正试图将h1元素的每个字符放在一个span中。

console.log(text)显示了每个字符的跨度,and console.log(string)显示了正确的文本。为什么结果没有加载到我的页面上?

var header = document.createElement("div");
document.body.appendChild(header);
var heading = document.createElement("h1");
header.appendChild(heading);
heading.setAttribute('class', 'spanify');
var headingText = document.createTextNode("Blah blah");
heading.appendChild(headingText);
var text = document.getElementsByClassName("spanify");
var string = text[0].innerText;
string.split("");
text.innerHTML = "";
for (i = 0; i < string.length; i += 1) {
text.innerHTML += "<span>" + string[i] + "</span>";
}
span {
background: pink;
}

split方法返回一个数组。它不会更改字符串本身。所以你的台词:string.split("")什么都不做。我认为你必须做:var newVar = string.split("")。然后必须对数组newVar执行for循环,而不是对字符串执行for循环。

我尝试了两个版本的代码,结果如下:

这项工作:

<script>
var string = "Blah Blah";
var newVar = string.split("");
let result = ""; 
for(i = 0; i < newVar.length; i+=1) {
result += "<span>" + string[i] + "</span>"
}                          
console.log(result);

这不起作用:

var string = "Blah Blah";
string.split("");             
let result = "";
for(i = 0; i < string.length; i+=1) {
string += "<span>" + string[i] + "</span>"
}                  
console.log(result)
</script>

我认为这个问题确实涉及到我上面所说的内容,但我正在编辑我的答案,以包含一个解决其他一些问题的代码片段。我使用了管道字符而不是span元素,因为它们在页面上是可见的,而要查看span,必须查看底层HTML。希望这是有用的:

var header = document.createElement("div");
document.body.appendChild(header);
var heading = document.createElement("h1");
header.appendChild(heading);
heading.setAttribute('id', 'spanify');
var headingText = document.createTextNode("Blah blah");
heading.appendChild(headingText);
var text = document.querySelector("#spanify");
var string = text.innerText;
var newVar = string.split("");
text.innerHTML = "";
for (i = 0; i < newVar.length; i += 1) {
text.innerHTML += newVar[i] + "|";
}
heading.innerHTML = text.innerHTML;
span {
background: pink;
}

相关内容

最新更新