javascript - 单击时更改字体真棒的类名
问题描述
这是问题
这是我的html
代码
<div id="bookmark">
<i class="far fa-bookmark"></i>
</div>
单击时,我想更改.far
为.fas
,反之亦然loop
。
这是我更新的 javascript
function changeClass(elem) {
var i = elem.childNodes[1];
var c = i.classList;
console.log(i)
console.log(c)
// Change class
if (c.contains("far")) {
i.classList.remove("far");
i.classList.add("fas");
} else {
i.classList.remove("fas");
i.classList.add("far");
}
}
这是我单击书签图标时浏览器中控制台输出的屏幕截图
当我var c
分别传递索引值时,i.classList[0]
我得到svg-inline--fa
但我得到的undefined
值i.classList[3]
而不是far
. 所以我该怎么做?
解决方案
我希望这是您正在寻找的(演示:https ://jsfiddle.net/hwv0oacL/8/ )
HTML
<div id="bookmark" onclick="changeClass(this)">
<i class="far fa-bookmark"></i>
</div>
Javascript
changeClass(elem) {
var i = elem.childNodes[0].classList;
// Change class far to fas
if (i.includes("far")) {
i.classList.remove("far");
i.classList.add("fas");
}
// Get back to original state
if (i.includes("fas")) {
i.classList.remove("fas");
i.classList.add("far");
}
}
- - - - - - - - - -更新 - - - - - - - - - - - - -
用下面的javascript替换上面的javascript。它也可以像你想要的那样循环工作,因为我们是按this
关键字获取元素。
JavaScript
function changeClass(elem) {
var i = elem.childNodes[1];
var c = i.classList;
// Change class
if (c.contains("far")) {
i.classList.remove("far");
i.classList.add("fas");
} else {
i.classList.remove("fas");
i.classList.add("far");
}
}
推荐阅读
- python - Python 将值存储到列表中并使用 if/else 语句运行 grep?
- java - 错误:不兼容的类型:int 无法转换为客户端 - Java
- c# - 更改excel文件内容放大pdf文件
- c# - 我正在尝试增加 Visual Studio 2017 中的堆栈大小
- java - 有没有支持并行读取的磁盘?
- javascript - mongoosejs 返回一个带有更改对象的 model.find
- jenkins - 剥离 GIT_BRANCH 以获取版本
- sql-server - SSIS 数据转换转换
- java - 项目 JAR 无法访问 Derby 驱动程序
- html - Css-Grid,Grid-auto-rows 不起作用,并且它的页面不响应,因为它应该