此脚本的目标是删除文本块的第一个字母- firstLetter
-并将其替换为newFirstLetter
。
const initialLetter = (firstParagraph) => {
let firstLetter = firstParagraph.innerHTML.charAt(0)
let newFirstLetter = "<span class='initial-letter'>" + firstLetter + "</span>"
let paragraphContent = firstParagraph.innerHTML
// this is not working
paragraphContent.substr(0, 1)
// this is working
firstParagraph.insertAdjacentHTML('afterbegin', newFirstLetter)
}
到目前为止,行firstParagraph.insertAdjacentHTML('afterbegin', newFirstLetter)
正常工作,但是行paragraphContent.substr(0, 1)
没有删除该内容块中的第一个字母。我想知道我在这里做错了什么?
此脚本的当前输出为:
<p><span class="initial-letter">E</span>Every day we see the potential technology provides to create better pathways of care—for the people delivering care and the patients they treat who are managing their own chronic disease(s). Rock Health reported that since 2011, $23B has been invested in thousands of digital health companies. Yet, historically, innovative solutions for kidney disease have been static at best and from a funding perspective, largely very quiet.</p>
发布于 2018-07-17 06:48:53
javascript中的字符串是不可变的,所以您不能简单地更改它,您需要将更改后的版本重新分配回innerHTML
let p = document.getElementById('p')
const initialLetter = (firstParagraph) => {
let firstLetter = firstParagraph.innerHTML.charAt(0)
let newFirstLetter = "<span class='initial-letter'>" + firstLetter + "</span>"
let paragraphContent = firstParagraph.innerHTML
firstParagraph.innerHTML = paragraphContent.substr(1)
// this is working
firstParagraph.insertAdjacentHTML('afterbegin', newFirstLetter)
}
initialLetter(p)
span.initial-letter {
color:red
}
<p id='p'>Every day we see the potential technology provides to create better pathways of care—for the people delivering care and the patients they treat who are managing their own chronic disease(s). Rock Health reported that since 2011, $23B has been invested
in thousands of digital health companies. Yet, historically, innovative solutions for kidney disease have been static at best and from a funding perspective, largely very quiet.</p>
发布于 2018-07-17 06:48:49
你可以把第一个字母切成薄片,然后贴上一些新的东西。
var field = document.getElementById("test").innerHTML;
var edited = document.getElementById("edited");
var newField = field.slice(1);
edited.innerHTML = "This is after slice: " + newField;
console.log(newField);
<div id="test">Hello</div>
<div id="edited"></div>
https://stackoverflow.com/questions/51370960
复制相似问题