Javascript 更改某些符号和/或字符的字体

Javascript 更改某些符号和/或字符的字体,javascript,html,css,fonts,Javascript,Html,Css,Fonts,因此,基本上就像问题所说的,我需要能够在不影响HTML外观的情况下更改HTML中某些字符和符号的字体。目前,HTML使用Gotham字体,该字体不支持某些符号。Arial适用于所有符号。为了更改这些字符的字体,我使用了以下代码: var str = $('.text').text(), letters = ''; for (var i = 0, len = str.length; i < len; i++) {

因此,基本上就像问题所说的,我需要能够在不影响HTML外观的情况下更改HTML中某些字符和符号的字体。目前,HTML使用Gotham字体,该字体不支持某些符号。Arial适用于所有符号。为了更改这些字符的字体,我使用了以下代码:

        var str = $('.text').text(),
            letters = '';
        for (var i = 0, len = str.length; i < len; i++) {
            if (str[i].match(/[¢€£¥©®™‰µ·•…′″§¶ß‹›«»‘’“”<>≤≥–—¯‾¤¦¨¡¿ˆ˜°−±÷⁄×¹²³¼½¾ƒ∫∑∞√∼≅≈≠≡∈∉∋∏∧∨¬∩∪∂∀∃∅∇∗∝∠´¸ªº†‡ÀÁÂÃÅÆÇÈÉÊËĒÌÍÎÏĪÐÑÒÓÔÕÖØŒŠÙÚÛÜŪÝŸȲÞàáâãäåāæçèéêëēìíïīðñòóôõöøōœšùúûüýþÿȳΑΒΓΔΕΖΘΛΞΟΠΡΣΦΨΩαβγδεζηθικλμνξοπρςστυφψωℵϖℜϒ℘ℑ←↑→↓↔↵⇐⇒⇓⇔∴⊂⊃⊄⊆⊇⊕⊗⊥⋅⌈⌉⌊⌋〈〉◊♠♣♥♦]/i)) {
                letters += '<span style="font:20px Arial;">' + str[i] + '</span>';
            }else {
                letters +=str[i];
            }
        }
        $('.text').html(letters);
var str=$('.text').text(),
字母='';
对于(变量i=0,len=str.length;i
当这段代码完成它的工作时,将符号的字体改为试用版,它有两个主要问题。第一个问题是重建文本时Gotham字体会消失,第二个问题是重建过程中所有格式(如标记)都会消失

例如:

<p>sadf sdajkf hksadjfh s</p>
<p>Symbols:</p>
<p>¢€£¥©®™‰µ·•…′″§¶ß‹›«»‘’“”&lt;&gt;≤≥–—¯‾¤¦¨¡¿ˆ˜°−±÷⁄×¹²³¼½¾ƒ∫∑∞√∼≅≈≠≡∈∉∋∏∧∨¬∩∪∂∀∃∅∇∗∝∠´¸ªº†‡ÀÁÂÃÅÆÇÈÉÊËĒÌÍÎÏĪÐÑÒÓÔÕÖØŒŠÙÚÛÜŪÝŸȲÞàáâãäåāæçèéêëēìíïīðñòóôõöøōœšùúûüýþÿȳΑΒΓΔΕΖΘΛΞΟΠΡΣΦΨΩαβγδεζηθικλμνξοπρςστυφψωℵϖℜϒ℘ℑ←↑→↓↔↵⇐⇒⇓⇔∴⊂⊃⊄⊆⊇⊕⊗⊥⋅⌈⌉⌊⌋⟨⟩◊♠♣♥♦</p>
sadf sdajkf hksadjfh s

符号:

())™‰µ·•…′″§¶ß‹›«»‘’“”≤≥–—¯‾¤¦¨¡¿ˆ˜°−±÷⁄×¹²³¼½¾ƒ∫∑∞√∼≅≈≠≡∈∉∋∏∧∨¬∩∪∂∀∃∅∇∗∝∠´¸ªº†‡ÀÁÂÃÅÆÇÈÉÊËĒÌÍÎÏĪÐÑÒÓÔÕÖØŒŠÙÚÛÜŪÝŸȲÞàáâãäåāæçèéêëēìíïīðñòóôõöøōœšùúûüýþÿȳΑΒΓΔΕΖΘΛΞΟΠΡΣΦΨΩαβγδεζηθικλμνξοπρςστυφψωℵϖℜϒ℘ℑ←↑→↓↔↵⇐⇒⇓⇔∴⊂⊃⊄⊆⊇⊕⊗⊥⋅⌈⌉⌊⌋⟨⟩◊♠♣♥♦

变成这样:

sadf sdajkf hksadjfh s Symbols:
<span style="font:20px Arial;">¢</span>
<span style="font:20px Arial;">€</span>
...
sadf sdajkf hksadjfh s符号:
¢
€
...

基本上,p标记(以及间距)消失了。如果我理解你的问题,有没有简单的方法来解决这个问题???

我建议将JavaScript函数集中在包含符号的部分,以简化过程

在类名中为您的节指定字符,例如“myChars”

<p>sadf sdajkf hksadjfh s</p>
<p>Symbols:</p>
<p class="myChars">¢€£¥©®™‰µ·•…′″§¶ß‹›«»‘’“”&lt;&gt;≤≥–—¯‾¤¦¨¡¿ˆ˜°−±÷⁄×¹²³¼½¾ƒ∫∑∞√∼≅≈≠≡∈∉∋∏∧∨¬∩∪∂∀∃∅∇∗∝∠´¸ªº†‡ÀÁÂÃÅÆÇÈÉÊËĒÌÍÎÏĪÐÑÒÓÔÕÖØŒŠÙÚÛÜŪÝŸȲÞàáâãäåāæçèéêëēìíïīðñòóôõöøōœšùúûüýþÿȳΑΒΓΔΕΖΘΛΞΟΠΡΣΦΨΩαβγδεζηθικλμνξοπρςστυφψωℵϖℜϒ℘ℑ←↑→↓↔↵⇐⇒⇓⇔∴⊂⊃⊄⊆⊇⊕⊗⊥⋅⌈⌉⌊⌋⟨⟩◊♠♣♥♦</p>
sadf sdajkf hksadjfh s

符号:

、)™‰µ·•…′″§¶ß‹›«»‘’“”≤≥–—¯‾¤¦¨¡¿ˆ˜°−±÷⁄×¹²³¼½¾ƒ∫∑∞√∼≅≈≠≡∈∉∋∏∧∨¬∩∪∂∀∃∅∇∗∝∠´¸ªº†‡ÀÁÂÃÅÆÇÈÉÊËĒÌÍÎÏĪÐÑÒÓÔÕÖØŒŠÙÚÛÜŪÝŸȲÞàáâãäåāæçèéêëēìíïīðñòóôõöøōœšùúûüýþÿȳΑΒΓΔΕΖΘΛΞΟΠΡΣΦΨΩαβγδεζηθικλμνξοπρςστυφψωℵϖℜϒ℘ℑ←↑→↓↔↵⇐⇒⇓⇔∴⊂⊃⊄⊆⊇⊕⊗⊥⋅⌈⌉⌊⌋⟨⟩◊♠♣♥♦

那么你的功能是:

var str = $('.myChars').text(),
letters = '';
for (var i = 0, len = str.length; i < len; i++) {
      if (str[i].match(/[¢€£¥©®™‰µ·•…′″§¶ß‹›«»‘’“”<>≤≥–—¯‾¤¦¨¡¿ˆ˜°−±÷⁄×¹²³¼½¾ƒ∫∑∞√∼≅≈≠≡∈∉∋∏∧∨¬∩∪∂∀∃∅∇∗∝∠´¸ªº†‡ÀÁÂÃÅÆÇÈÉÊËĒÌÍÎÏĪÐÑÒÓÔÕÖØŒŠÙÚÛÜŪÝŸȲÞàáâãäåāæçèéêëēìíïīðñòóôõöøōœšùúûüýþÿȳΑΒΓΔΕΖΘΛΞΟΠΡΣΦΨΩαβγδεζηθικλμνξοπρςστυφψωℵϖℜϒ℘ℑ←↑→↓↔↵⇐⇒⇓⇔∴⊂⊃⊄⊆⊇⊕⊗⊥⋅⌈⌉⌊⌋〈〉◊♠♣♥♦]/i)) {
           letters += '<span style="font:20px Arial;">' + str[i] + '</span>';
      }else {
          letters +=str[i];
      }
}
$('.myChars').html(letters);
var str=$('.myChars').text(),
字母='';
对于(变量i=0,len=str.length;i

希望这有帮助。干杯!

解决方案实际上相当简单。只需使用.html()并确保您没有匹配任何重要的html语法字符,如“\”或“”

var str=$('.text').html(),
字母='';
对于(变量i=0,len=str.length;i
简单的答案是:使用支持所有字符的字体。这将为您节省大量时间和脚本开销…感谢您的解决方案!问题是HTML不是由我直接生成的,而是由TinyMCE生成的,这让我有点困难。此外,我应该在最初的任务中提到这一点ion,对不起!事实上,我已经修复了。lol意识到我所需要做的只是.html()而不是.text(),并确保我匹配的符号和标记周围的符号对html语法不重要。我将添加这一点作为答案
        var str = $('.text').html(),
            letters = '';
        for (var i = 0, len = str.length; i < len; i++) {
            if (str[i].match(/[µ·•¶ß¯‾¤¦¨¡¿ˆ˜°−±÷⁄×¹²³¼½¾ƒ∫∑∞√∼≅≈≠≡∈∉∋∏∧∨¬∩∪∂∀∃∅∇∗∝∠ªº†‡ÀÁÂÃÅÆÇÈÉÊËĒÌÍÎÏĪÐÑÒÓÔÕÖØŒŠÙÚÛÜŪÝŸȲÞàáâãäåāæçèéêëēìíïīðñòóôõöøōœšùúûüýþÿȳΑΒΓΔΕΖΘΛΞΟΠΡΣΦΨΩαβγδεζηθικλμνξοπρςστυφψωℵϖℜϒ℘ℑ←↑→↓↔↵⇐⇒⇓⇔∴⊂⊃⊄⊆⊇⊕⊗⊥⋅⌈⌉⌊⌋◊♠♣♥♦]/i)) {
                letters += '<span style="font:20px Arial;">' + str[i] + '</span>';
            }else {
                letters +=str[i];
            }
        }
        $('.text').html(letters);