gpt4 book ai didi

javascript - 将每个单词的每个首字母包装在 span 标记中 - javascript

转载 作者:行者123 更新时间:2023-11-30 12:41:00 25 4
gpt4 key购买 nike

我需要使用 javascript 将具有特定 css 类“eachword”的行中每个单词的每个首字母包装到“span”html 标记中。同时我有很好的脚本,除了一个问题,脚本将特殊字符如“&”转换为 html 格式。所以,这就是我现在所拥有的:

应用脚本之前:

<a class="eachword" href="#">Models & Brands</a>

脚本:

<script type="text/javascript">
window.onload = function()
{
var elements = document.getElementsByClassName("eachword");

for( var i=0; i<elements.length; i++)
{
elements[i].innerHTML = elements[i].innerHTML.replace(/\b([a-z])([a-z]+)?\b/gim, "<span class='firstletter'>$1</span>$2");
}
}
</script>

结果:

<a class="eachword" href="#"><span class="firstletter">Models &<span class="firstletter">a</span>mp; <span class="firstletter">Brands</span></a>

我需要这个结果:

<a class="eachword" href="#"><span class="firstletter">Models <span class="firstletter">& </span><span class="firstletter">Brands</span></a>

在“head”标签中,我还包含了 jQuery 1.7.2。

那么,问题来了,代码哪里出了问题,我哪里出错了?感谢关注,希望得到您的帮助!

最佳答案

在 vanilla JS 中,我认为要快一点:

var a = document.getElementsByTagName("a");

for (i = 0; i < a.length; i++) {
var words = a[i].innerHTML.split(" ");

for (j = 0; j < words.length; j++) {
if(words[j][0] != "&") {
words[j] = "<span class='firstletter'>" + words[j][0] + "</span>" + words[j].substring(1);
}
}

a[i].innerHTML=words.join(" ");
}

更现代的方式:

var anchors = Array.from(document.getElementsByTagName("a"));
anchors.forEach(a => {
a.innerHTML =
a.textContent
.split(' ')
.map(word => {
if (word[0] != '&') {
return `<span class="firstletter">${word[0]}</span>${word.substring(1)}`;
} else {
return word;
}
})
.join(' ');
});

JSFiddle .

关于javascript - 将每个单词的每个首字母包装在 span 标记中 - javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24466757/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com