javascript-了解css类如何更改/更新
我有一个id=“mydiv”的div,它在开始时没有分配给类。 以下两个函数为mydiv分配类javascript-了解css类如何更改/更新,javascript,html,css,classname,Javascript,Html,Css,Classname,我有一个id=“mydiv”的div,它在开始时没有分配给类。 以下两个函数为mydiv分配类 function one(){ document.getElementById(mydiv).setAttribute("class", "classone"); } function two(){ document.getElementById(mydiv).setAttribute("class", "classtwo"); } 完成这两个函数后,mydiv的类名是什么? 是二班还是一班和二班
function one(){
document.getElementById(mydiv).setAttribute("class", "classone");
}
function two(){
document.getElementById(mydiv).setAttribute("class", "classtwo");
}
完成这两个函数后,mydiv的类名是什么?
是二班还是一班和二班都有?
(如果是两个类-如何将函数2更改为
document.getElementById(mydiv).className = "classone";
要添加类值,请使用:
document.getElementById(mydiv).className += " classtwo";
注意前导空格。要删除所有类值,请执行以下操作:
document.getElementById(mydiv).className = "";
还有一个问题也是如此,但是有些浏览器可能缺乏支持,因此在一般的web上使用还不安全。不使用jQuery的
addClass
等,如果您不想或不能使用classList
,您可以自己用以下方法处理:
function addClass(elt, cls) {
elt.className += " " + cls;
}
这就冒着两次添加同一类的风险,这不会造成任何伤害,但并不雅观。为了避免这个问题:
function addClass(elt, cls) {
var classes = elt.className.split(/\s+/),
index = classes.indexOf(cls);
if (index === -1) {
elt.className = classes.concat(cls).join(' ');
}
}
类似的逻辑可用于实现removeClass
:
function removeClass(elt, cls) {
var classes = elt.className.split(/\s+/),
index = classes.indexOf(cls);
if (index !== -1) {
classes.splice(index, 1);
elt.className = classes.join(' ');
}
}
如果你把它设为一个字符串,它就是那个字符串。上一个值将被删除。如果要添加类,必须获取属性的当前值并添加另一个字符串。请注意,您不必使用
.setAttribute()
-您可以通过相关DOM元素的“className”属性直接引用类字符串。要添加类(且仅添加类),可以使用elm.className+=“”+strClassToAdd;要进行管理,请使用较新的elm.classList.remove('classone');elm.classList.add('classtwo');