Javascript 将类名添加到MouseeEvent上的主体中多次发生?
我正在向body标记添加一个额外的类名,但是该类名被添加了多次。。。一些关于如何避免这种情况的帮助将是非常受欢迎的 谢谢Javascript 将类名添加到MouseeEvent上的主体中多次发生?,javascript,mouseevent,classname,Javascript,Mouseevent,Classname,我正在向body标记添加一个额外的类名,但是该类名被添加了多次。。。一些关于如何避免这种情况的帮助将是非常受欢迎的 谢谢 <html> <head> <style type="text/css"> .defaultText { font-size:100%; } .myNewClass { font-size:150%; color:red; } </style> <script type="text/javascript"> &l
<html>
<head>
<style type="text/css">
.defaultText {
font-size:100%;
}
.myNewClass {
font-size:150%;
color:red;
}
</style>
<script type="text/javascript">
<!--
var state;
window.onload=function() {
obj=document.getElementsByTagName('body')[0];
state=(state==null)?' defaultText':state;
obj.className+=state;
document.getElementById('addClass').onclick=function() {
obj.className+=(obj.className==' myNewClass')?' defaultText':' myNewClass';
state=obj.className;
}
}
-->
</script>
</head>
<body class="thisClassMustStay">
<div>My text here</div><br />
<a href='#' id="addClass">toggle class</a></div>
</body>
</html>
.defaultText{
字体大小:100%;
}
.myNewClass{
字体大小:150%;
颜色:红色;
}
我的文本在此
我使用此功能(对于没有jQuery的站点)
另一种解决方案是,如果您添加了类,请保留一个全局函数以记住它,或者编写一个函数来检查它:
function hasClass(element, className)
{
var classes = element.className.split(' ');
index = classes.indexOf(className);
return index > -1;
}
第一次运行代码时,请说明us undefined,以便在声明代码时最好将其设置为null,或者将上述内容更改为:
state = state? ' defaultText' : state;
假设表达式第一次运行时计算结果为true,则状态将设置为“defaultText”
。请注意,字符串的开头有一个空格。在某些浏览器中,此空间将被删除,而在其他浏览器中,此空间将被保留,因此最好将其删除
> obj.className += state;
此时,“defaultText”将添加到body元素的类列表中。同样,前导空格可能存在一些问题,最好由健壮的hasClass、addClass和removeClass函数来处理(它们编写起来并不特别困难)
使用上述建议的功能,这可能是:
if (hasClassname(obj, 'myNewClass')) {
addClassname(obj, 'defaultText') ;
} else {
addClassname(obj, 'myNewClass') ;
}
}
}
如果您需要has/add/removeClassname函数的帮助,请询问
> obj.className += state;
>
> document.getElementById('addClass').onclick = function() {
> obj.className += (obj.className == ' myNewClass')? ' defaultText' :
> ' myNewClass';
if (hasClassname(obj, 'myNewClass')) {
addClassname(obj, 'defaultText') ;
} else {
addClassname(obj, 'myNewClass') ;
}
state = obj.className;