替换元素中的类名,但不删除此元素中的其他类纯javascript
Replace Class Name in elements but not remove other class in this elements pure javascript
我想替换整个文档中的字体类
如何在没有jQuery的情况下使用纯JavaScript来解决这个问题?请提出建议
我不想在javascript中的更改类元素中删除其他类。怎么办
这是我的项目
Html
<span class="switch-unicode">
<a onclick="changeFont(2)" href="javascript:">
<i class="icon icon-check"></i>
<span>Unicode</span>
</a>
</span>
<span class="switch-zawgyi">
<a onclick="changeFont(1)" href="javascript:">
<i class="icon icon-check-empty"></i>
<span>Zawgyi</span>
</a>
</span>
<div class="clearfix">
<span class="unicode ieUnicode pull-right">Unicode</span>
<span class="unicode ieUnicode pull-left">Unicode</span>
</div>
Css
.unicode{
border: 2px solid blue;
}
.zawgyi {
border: 2px solid red;
}
.pull-right {
float: right;
}
.pull-left {
float: left;
}
.clearfix {
clear: both;
}
Javascript
function changeFont(num) {
var fromFont = 'unicode ieUnicode';
var toFont = 'zawgyi';
if ( num==2 ) {
fromFont = 'zawgyi';
toFont = 'unicode ieUnicode';
};
/* Change classes */
var elems = document.getElementsByClassName( fromFont );
var i = elems.length;
while(i--) {
var item = elems[i];
item.className = toFont;
};
return false;
};
item.className = toFont;
你正在重新分配整个班级。
连接!
item.className += toFont;
^
或者使用classList对象。
item.classList.add(toFont);
如果我理解正确,你只想用另一个类更改一个类,你可以这样做:
x = document.getElementsByClassName('unicode').item();
x.attributes.class //say logs out "unicode class1 class2";
x.attributes.class = "class3 class1 class2"; //replaced unicode by class3
希望能有所帮助。
我添加了"hasClass"来检查特定元素是否属于类。我还添加了"addClass"answers"removeClass"方法,以便在指定的元素类列表中添加和删除类。以下是实现:
var link1 = document.getElementById("changeFont1");
var link2 = document.getElementById("changeFont2");
link1.onclick = function() {
changeFont(2);
};
link2.onclick = function() {
changeFont(1);
};
function changeFont(num) {
var fromFont = 'unicode ieUnicode';
var toFont = 'zawgyi';
if ( num==2 ) {
fromFont = 'zawgyi';
toFont = 'unicode ieUnicode';
};
/* Change classes */
var elems = document.getElementsByClassName( fromFont );
var i = elems.length;
while(i--) {
var item = elems[i];
if (hasClass(item, fromFont)) {
removeClass(item, fromFont);
addClass(item, toFont);
}
};
return false;
};
function hasClass(ele,cls) {
return ele.className.match(new RegExp('(''s|^)'+cls+'(''s|$)'));
}
function addClass(ele,cls) {
if (!hasClass(ele,cls)) ele.className += " "+cls;
}
function removeClass(ele,cls) {
if (hasClass(ele,cls)) {
var reg = new RegExp('(''s|^)'+cls+'(''s|$)');
ele.className=ele.className.replace(reg,' ');
}
}
.unicode{
border: 2px solid blue;
}
.zawgyi {
border: 2px solid red;
}
.pull-right {
float: right;
}
.pull-left {
float: left;
}
.clearfix {
clear: both;
}
<span class="switch-unicode">
<a id="changeFont1" href="javascript:">
<i class="icon icon-check"></i>
<span>Unicode</span>
</a>
</span>
<span class="switch-zawgyi">
<a id="changeFont2" href="javascript:">
<i class="icon icon-check-empty"></i>
<span>Zawgyi</span>
</a>
</span>
<div class="clearfix">
<span class="unicode ieUnicode pull-right">Unicode</span>
<span class="unicode ieUnicode pull-left">Unicode</span>
</div>
相关文章:
- 如何覆盖锚点元素's href目标,并在我点击转到目标javascript时删除其他错误
- 如何在不影响其他元素的情况下扩展DIV
- 单击其他元素时,我如何使用 jQuery 忽略更改事件
- 如何查明鼠标按下事件是否发生在滚动条上或元素中的其他任何位置
- 从其他元素上的单击事件访问image src属性
- 如何'剪切'DOM元素并将其显示在其他位置
- jQuery悬停动画只在其他类似元素中的一个元素上
- 基本D3.js:如何将具有其他属性的数据绑定到元素
- 单击其他元素或鼠标向上时隐藏输入框,但保留一次焦点
- 将一个元素放在具有相同z索引的其他元素前面
- 将href中的图像替换为其他元素中的图像
- JavaScript删除所有其他元素
- AngularJS:根据其他对象预先选择ng repeat中的select元素
- 为数组元素的属性赋值将设置所有其他类似元素的属性
- 如何使用其他自定义指令中的元素标记作为另一个自定义指令的模板
- stopPropagation是否还会阻止同一元素上的其他处理程序运行
- 如何在 *ngFor 列表中显示单击的元素,使用 Angular 2 隐藏其他元素
- 单击更改其他元素源
- 有没有办法将选择器返回到元素?是$(这个)还是其他方法
- 从异步调用返回数组,然后为数组的每个元素返回其他异步调用