这是我正在使用的功能:

function replaceH1s() {
  $("h1").each(function(){
    h1name = $(this).text();
    stuff = h1name.toLowerCase().replace(' ','-');
    $(this).html('<img src="/assets/image/h1_' + stuff + '.png" alt="' + h1name + '" />');
  })
}


我一辈子都想不通为什么此函数用连字符替换h1name字符串中的第一个空格,但随后的连字符都没有。我尝试了转义和转义(然后将偶然发现的%20替换为连字符,但这样做也一样)。我尝试了用于全空白的正则表达式,并且做了同样的事情。我觉得我在这里看不到什么超级基础。

最佳答案

您需要指定一个全局正则表达式。否则,它仅与第一个匹配项匹配。

// regular expression
    function replaceH1s() {
      $("h1").each(function(){
        h1name = $(this).text();
        stuff = h1name.toLowerCase().replace(/\s+/g, '-');  // matches all whitespace
                                                           // use / /g to match a single space
        $(this).html('<img src="/assets/image/h1_' + stuff + '.png" alt="' + h1name + '" />');
      })
    }

// firefox only
    function replaceH1s() {
      $("h1").each(function(){
        h1name = $(this).text();
        stuff = h1name.toLowerCase().replace(' ', '-', 'g');
        $(this).html('<img src="/assets/image/h1_' + stuff + '.png" alt="' + h1name + '" />');
      })
    }

09-20 02:21