首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >显示隐藏div from class name纯javascript

显示隐藏div from class name纯javascript
EN

Stack Overflow用户
提问于 2017-02-09 05:42:18
回答 3查看 342关注 0票数 0

我正在开发一个视频播放器,它可以将视频放入div覆盖的iframe中。我希望避免在每个链接中使用重复的代码(如onclick=() ),也希望避免使用外部库(如jQuery ),因为在启动视频窗口时,jQuery会产生令人不快的闪烁屏幕。

我的问题是,到目前为止,在我的工作中,只有第一个链接打开了视频覆盖。我(有些)理解表示数组中的第一个元素。一个数组可以包含无限的数值范围吗,或者有没有更好的方法来实现我的目标?这些库中可能会有数千个视频,因此在我的脚本中逐个列出它们是不切实际的。

我还在努力学习,所以我会非常感谢一个工作的例子。谢谢

我到目前为止的工作

https://jsfiddle.net/4oomb9rt/

示例代码

代码语言:javascript
复制
<!doctype html>
<html>
<head>
<title>Video Overlay</title>
<style>
body {
    margin: 0;
    font-family: arial;
}
#vidPlayer {
    height: 100%;
    width: 100%;
    position: fixed;
    z-index: 1;
    top: 0;
    left: 0;
    background-color: #000;
    overflow: hidden;
    transition: 0.5s;
    display: none;
    color: white;
}
.closebtn {
    position: absolute;
    top: 7px;
    right: 7px;
    font-size: 50px;
}
.openbtn {
    font-size: 30px;
}
.openbtn, .closebtn {
    max-height: 48px;
    max-width: 48px;
    min-height: 48px;
    min-width: 48px;
    border-radius: 7px;
    line-height: 12px;
}
.vidContent {
    width: 100%;
    text-align: center;
    font-size: 32px;
}
</style>
</head>
<body>
<div id="vidPlayer">
<button class="closebtn">&times;</button>
<div class="vidContent">vidplayer content</div>
</div>
<button class="openbtn">&#9776;</button>
<button class="openbtn">&#9776;</button>
<button class="openbtn">&#9776;</button>
<script>
function openNav() {
document.getElementById("vidPlayer").style.display = "block";
}
function closeNav() {
document.getElementById("vidPlayer").style.display = "none";
}
var opener = document.getElementsByClassName('openbtn')[0];
opener.addEventListener("click", function(e) {
    openNav();
}, false);
var closer = document.getElementsByClassName('closebtn')[0];
closer.addEventListener("click", function(e) {
    closeNav();
}, false);
</script>
</body>
</html>
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-02-09 05:50:46

您可以使用ClassName遍历元素并分配事件侦听器。

代码语言:javascript
复制
for(var i=0;i<document.getElementsByClassName("openbtn").length;i++){
    document.getElementsByClassName("openbtn")[i].addEventListener("click", function(e) {
        openNav();
    }, false);
    }

演示:https://jsfiddle.net/tj23hy3h/

票数 0
EN

Stack Overflow用户

发布于 2017-02-09 05:48:31

你在正确的轨道上。你想对你的javascript做一些小的修改。

代码语言:javascript
复制
    var openers = document.getElementsByClassName('openbtn');
    for(var i=0; i<openers.length; i++) {
      openers[i].addEventListener("click", function(e) {
          openNav();
      }, false);
    }
    var closers = document.getElementsByClassName('closebtn');
    for(var i=0; i<closers.length; i++) {
      closers[i].addEventListener("click", function(e) {
          closeNav();
      }, false);
    }

通过遍历所有的开场白或闭幕场,您可以将监听器添加到每个开场白或闭幕场。

票数 0
EN

Stack Overflow用户

发布于 2017-02-09 05:48:37

您的问题是,您必须将您的事件侦听器添加到该类型的所有元素中,这样才能正常工作:

var opener = document.querySelectorAll('.openbtn'); Array.from(opener).foreach(function(opener_single){ opener_single.addEventListener("click", openNav, false); });

更接近的元素也有同样的理论。

我在这里做的是获取类名为openbutton的所有元素,然后在循环中循环它们,然后应用单击事件侦听器,在其中运行openNav函数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42124196

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档