javascript - 为何箭头标着的正则无效?
巴扎黑
巴扎黑 2017-04-11 12:36:05
[JavaScript讨论组]

这里要实现的是class 的增和删。比如


然后我要删掉two这个类名。

巴扎黑
巴扎黑

全部回复(4)
巴扎黑

看这个意思是,如果 "cls" 出现在开头或者结尾,或者前后有空格,就把它删掉?

至于为什么不管用,你提供的信息量太少,也不知道你的 className String 到底是什么。。只能猜:
1. 对于 \s 没有定义数量,因此有一个空格的时候能替换,但如果有两个,就会留下空格。
2. 如果空格之后,cls 之间还有别的文字,那是肯定替换不了的

麻烦你多提供一些信息,比如要替换的字符串是什么样的,或者你到底要实现什么

OK,明白了。但你说 “增删”,但其实你的截图中只能看到 “删”,看不到 “增”。

建议你先看一下这里:https://developer.mozilla.org...
MDN 提供了两种方式,推荐的肯定是用 .classList,就算浏览器不支持,底下也提供了 polyfill。

何必要自己再造个轮子呢。如果要造,人家也帮你造好了:

怪我咯

请给出你的测试用例。

迷茫

这是作死的节奏呀,className 不应该这么搞吧。

// remove two
document.getElementById('p').classList.remove('two');
// remove two
document.getElementById('p').classList.add('two');
迷茫
<style type="text/css">
  .one {
    color: red;
  }
  .two {
    border: 1px solid blue;
  }
  </style>
  <script type="text/javascript">
 setTimeout(function(){
  var o = document.getElementsByTagName('p')[0];
  function fnRemoveClass(e,s){
  if (Object.prototype.toString.call(e).indexOf('HTML') === -1 || typeof s !== 'string') return;
         var re = new RegExp('(\\b|^)' + s + '(\\s|$)','g');
          console.log(e.className = e.className.replace(re,''));
  }
  fnRemoveClass(o,'two');
  },0);
  </script>
  <p class="one two">demo</p>
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号