javascript - 在css类更改后执行javascript
问题描述
每当我单击按钮时,我都会使用此代码隐藏 div。我试图激活此功能,而不是在“onclick”上,而是在按钮获得“活动”类时。
那可能吗?
<button onclick="myFunction()">Try it</button>
<div id="myDIV">
This is my DIV element.
</div>
<script>
function myFunction() {
var x = document.getElementById("myDIV");
if (x.style.display === "block") {
x.style.display = "none";
} else {
x.style.display = "block";
}
}
</script>
解决方案
虽然,不确定元素的类是如何变化的,但如果元素的类使用classList.contains()
.
以下示例与MutationObserver和setInterval()一起演示:
function myFunction() {
var x = document.getElementById("myDIV");
if (x.style.display === "block" || x.style.display === '') {
x.style.display = "none";
} else {
x.style.display = "block";
}
}
var elem = document.getElementById("tryBtn");
let observer = new MutationObserver(mutationRecords => {
if(elem.classList.contains('active')){
myFunction();
}
});
// observe attributes
observer.observe(elem, {
attributes: true
});
// test
setInterval(function(){
if(elem.classList.contains('active')){
elem.classList.remove('active');
}
else{
elem.classList.add('active')
}
}, 1000);
<button id="tryBtn">Try it</button>
<div id="myDIV">
This is my DIV element.
</div>
推荐阅读
- python - Python 模块和多个 python-dev 安装
- javascript - 使用 Material Components Web 在应用栏上进行可扩展搜索
- java - context.getExternalFilesDirs(null) 即使挂载了 sd 卡也会返回一个空元素
- java - HashMap 重复 Android Studio 中的最后一个元素
- powerbi - Power Bi 去除过滤器
- powershell - VSTS 扩展:“由于缺少一个或多个强制参数,无法处理命令:appdirectory webappname ResourceGroupName”
- excel - 向 If Then 语句添加错误消息
- angularjs - angular-translate 防止 lang-keys 在路由更改后闪烁
- c++ - 只读来自 Kafka 主题的最后一条消息
- flyway - SQL 始终加密并转储迁移脚本以进行验证