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

标签 javascript jquery html css word-wrap

我需要使用 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/

相关文章:

html - Img 的最大高度不尊重 parent 的尺寸

html - 将 iframe 放在 div 的中心

javascript - 在 scrollabe 之上创建不可滚动的 div

javascript - Tumblr JS/Jquery 无限滚动/Masonry 故障

javascript - Bootstrap 图片库始终在页面顶部打开

javascript - 使 jquery 工具提示动态化

javascript - 折叠具有多个 tbody 元素的表行

javascript - promise 运行的保证顺序,Word API JS

javascript - 如何对特殊字母( typescript )进行排序?

javascript - 寻找 JS/JQuery 完全模式覆盖