3 回答

TA贡献1906条经验 获得超10个赞
你可以做:
document
.querySelectorAll('#pColors p')
.forEach(p => {
const len = p.innerText.length - 1
p.innerHTML = `${p.innerText.slice(0, len)} <span class="red">${p.innerText[len]}</span>`
})
.red { color: red; }
<section id="pColors">
<h1>Name</h1>
<p>John</p>
<p>Jacques</p>
<p>Peter</p>
<p>Robert</p>
</section>

TA贡献1801条经验 获得超16个赞
这样的事情应该工作:
document.querySelectorAll('p').forEach(el => {
const prefix = el.innerText.substr(0, el.innerText.length - 1);
const suffix = el.innerText.substr(el.innerText.length - 1);
el.innerHTML = `${prefix}<span class="colored">${suffix}</span>`;
})
使用document.querySelectorAll我们选择<p>页面上的所有标签。然后我们循环NodeList使用 using NodeList#forEach。对于每次迭代,我们挑选出除最后一个字符之外的所有字符,然后挑选出最后一个字符。最后,我们innerHTML使用模板字符串重构元素的内容,并将单个字符包装在<span>.
此代码假设您的 CSS 如下所示:
.colored {
color: red;
}
document.querySelectorAll('p').forEach(el => {
const prefix = el.innerText.substr(0, el.innerText.length - 1);
const suffix = el.innerText.substr(el.innerText.length - 1);
el.innerHTML = `${prefix}<span class="colored">${suffix}</span>`;
})
.colored {
color: red;
}
<section>
<h1>Name</h1>
<p>John</p>
<p>Jacques</p>
<p>Peter</p>
<p>Robert</p>
</section>

TA贡献1906条经验 获得超3个赞
let list = ['John', 'Jacques', 'Peter', 'Robert'];
for (let i = 0; i < list.length; i++) {
let name = list[i];
document.getElementById("list-container").innerHTML += `<p> ${name.substr(0, name.length - 1)}<span style="color: red">${name.charAt(name.length - 1)}<span><p>`
}
<div id="list-container"></div>
添加回答
举报