捕获一个超过1个单词的字符串,并将其转换为一个由短划线分隔的字符串

时间:2019-02-28 14:55:37

标签: javascript wordpress

我正在与wordpress网站合作。我使用javascript编写了一个函数,该函数向body标签添加了一个类,该类允许根据类别显示不同的背景。当类别是单个单词时,它会很好地工作。但是,如果我的类别包含2个或更多的单词,它将停止工作。这是代码:

 ( window.onload=function() {
   let cat =   document.querySelector('.cats').lastElementChild.textContent;
   let body = document.querySelector('body');  

   if(cat.indexOf(' ') >= 0) {
   cat.replace(' ','-');

   body.classList.add(cat.toLowerCase());
   } else {

   body.classList.add(cat.toLowerCase());
   }

   })();

如果类别是“牙医”,则此字符串将添加到body标签,但如果是“普通医生”,它将不再起作用。

仅当它是使用if_single()的帖子时,我才使用functions.php调用此函数。

我尝试使用replace()替换破折号的空间,但是我没有正确实现它。

我该怎么做才能将诸如“普通医师”之类的字符串转换成“普通医师”之类的字符串,并可以将其作为类添加到body标签?

2 个答案:

答案 0 :(得分:1)

首先,querySelector仅挂钩遇到的第一个选择器。如果要验证具有该类名称的每个元素,请改用querySelectorAllgetElementsByClassName

第二,与您的问题有关,因此replace仅替换第一个匹配项。您应该将其替换为:
cat.replace(/\s/g, "");

但是,您还必须重新分配它:
cat = cat.replace(/\s/g, "");

答案 1 :(得分:1)

使用replace时,字符串的值不会更改。 试试这个:

cat = cat.replace(/ /g,'-');