对于正则不是很熟
高洛峰
高洛峰 2016-11-10 15:44:34
0
4
635
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>无标题文档</title>
</head>
<style>
#div1{color:red; font-size:30px;}
.active{ background:black;}
</style>
<body>

<div id="div1" class="actived" onClick="highlight(this)">123456789</div>

<script type="text/javascript">
function highlight(e){
        
    var str=e.className;
    var re=/active/;
    if(re.test(str)==true){
        e.className=str;
    }else{
        e.className+=" active";
    }
}
</script>
</body>
</html>

这是一个点击添加class改变样式的函数,当被点击的标签为空时会添加active,而当它已经含有时就不需要继续添加,现在是当它class为actived时也被认为是有active,这个问题该怎么解决?

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

membalas semua(4)
学霸
re = /active(?!d)/
正则前瞻,active后面不跟d


三叔

/^active$/ 只匹配active

但是你为什么不适用classList呢?自带has,add,remove,contain方法


学霸

你这个元素的class如果写的比较规范的话,那么active后面跟的应该是行尾,你把re改一下,

re = /active$/


三叔

re = /active(?!d)/?!n :匹配任何其后没有紧接指定字符串 n 的字符串。

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan