当前位置: 首页 > 知识库问答 >
问题:

style.display=“无”;不适用于javascript DOM

景安翔
2023-03-14

作为一个初学者,我试图创建一个模式,一旦点击共享按钮就会显示出来,但我似乎不知道为什么onclick函数没有执行,想法是,一旦点击共享按钮,就会显示:none;将更改为display:block,所以要么style.display=“block”有问题,要么(更有可能的是)我很烂。感谢任何帮助。谢谢你之前。

HTML代码:

<div class="navbar-container">
  <div class="nav nav-1" >
    <button class="btn btn-1" id="sharebtn">Share </button>
  </div>

  <div class="nav nav-2">
    <button class="btn btn-2"  id="howbtn">how does it work ?</button>      
</div>
<div class="nav nav-3" >
    <button class="btn btn-3"  id="abouttns">About</button>
</div>
</div>


  <!---Creating the modals-->
<div id="modal-share">
    <div class="modal-header">
        <button class="close-share">&times;</button>
    </div>
    <div class="link">
        <input type="text" class="link-input" placeholder="www.youtube.com/jdlkfsjakfdsa">
        <button id="share-btn" onclick="fuck">share</button>
    </div>
    <div class="description">
        <input type="text" max="50" placeholder="cats are not that smart">
    </div>
    
</div>

CSS代码:

    #modal-share{
        display: none; /*hidden by default*/
        position: fixed; /*staying in the center even when scrolling*/
        z-index: 1; /*stays on top of grids, 3D translation*/
        left: 0;
        top: 0;
        width: 100%;
        height: 100%;
        overflow: auto;
        background-color: white; /*color of the modal*/
        background-color: rgba(0,0,0,0.4);  /*color of the background*/
        border:1px solid black;

    }

Javascript代码:

<script>
    var modal=document.getElementById("modal-share");
    var share_btn=document.getElementsById("sharebtn");
    var close_share=document.getElementsByClassName("close-share");


   

    share_btn.onclick=function(){
        modal.style.display="block";
    }
    close_share.onclick=function(){
        modal.style.display="none";
    }

    window.onclick=function(event){
        if(event.target==modal){
            modal.style.display="none";
        }
    }

</script>

共有2个答案

颛孙晗昱
2023-03-14

有两件事,首先,您的代码中有一个输入错误getElementsById应该是getElementById。第二个是GetElementsByClassName返回一个数组(如元素集合),因此您需要从数组中检索第一个元素。下面是更新的JavaScript。

const modal = document.getElementById("modal-share");
const share_btn = document.getElementById("sharebtn"); // typo here in original
const close_share = document.getElementsByClassName("close-share")[0]; // select first element in HTML collection

share_btn.onclick = function() {
    modal.style.display="block";
}
    
close_share.onclick = function() {
    modal.style.display="none";
}
 
window.onclick = function(event) {
    if(event.target==modal) {
        modal.style.display="none";
    }
}
杜彦君
2023-03-14

在您的脚本中实际上存在一个错误,该错误导致了其他所有操作的失败,即

var share_btn=document.getElementsById("sharebtn");

没有函数Document.GetElementsById,只有Document.GetElementById。我有你的代码与以下链接的修复-

https://jsfidle.net/2pfzc4gl/

 类似资料:
  • 问题内容: 好的,这是一些演示此问题的示例代码。如果我单击Firefox中的按钮,第一个选项将消失。如果单击chrome中的按钮,则什么也没有发生,或者如果我检查第一个选项,它确实具有属性“ style =’display:none’”,但html页面上的选项本身未隐藏。 为什么在chrome中不起作用? 问题答案: 解决方法是删除元素以响应您的事件,并在需要时以及在需要时将其重新添加。IIRC,

  • 我有一个受保护的Web API正在运行,我想访问它。在Azure中,应用注册是: 具有Web API租户管理员权限的SPA Web API没有租户管理员权限,因此请求其id的令牌将返回“应用需要访问资源的权限”错误 我正在尝试获取Web API的承载令牌。问题是它不适用于MSAL,但适用于ADAL。 以下是我的“SPA”的ADAL vanilla JS代码: 如果我在“邮递员”中复制令牌并执行请求

  • 我正在使用Selenium和Java自动化拖放。以下是在无头模式下使用chrome驱动程序执行拖放的代码。 在无头chrome驱动程序中执行时不会发生任何情况。但是,在非无头chrome驱动程序中,这可以正常工作并执行拖放。 注意-同时使用dragAndDropBy(源、目标)和dragAndDropBy(源、xOffset、yOffset)进行了尝试。这两种方法在非无头chrome中也不起作用

  • 问题内容: 嗨,我只是简单地尝试在www.example.com上获取h1标签,该标签显示为“ Example Domain”。该代码适用于http://www.example.com,但不适用于https://www.exmaple.com。我该如何解决这个问题?谢谢 问题答案: PhantomJSDriver不支持(所有)DesiredCapabilities。 你会需要: 记录在这里:htt

  • 所以我使用这种方法写入文件,它在windows上运行完全正常,但在mac上运行时,它会创建文件,但它们是空的。 我知道数据是正确的,因为它打印正确。感谢您的任何帮助,这真的让我绊倒了。

  • 列名称的类型为int[] 上述查询适用于postgresql,但不适用于hsqldb,甚至适用于sql 尝试的hsqldb版本:2.2.9和2.3.0 在hsqldb中工作的sql是从table_name中选择x,unnest(column_name)y(x)x和y不是该表的列。