javascript - onclick 功能不起作用(更改样式)

标签 javascript html css function

我创建了两个模式,一个用于登录,另一个用于注册。每个都有一个在点击时关闭模态的跨度,但由于某种原因,当我点击它时只有第一个模态关闭。

我已经尝试了一个有效的解决方案,它创建了两个不同的跨度,每个跨度都有一个函数,还有额外的 css 代码,但这是一个冗长的方法,我了解到这不是一个好的做法。

JS

let modal = document.querySelector("#modal-login");

let modalCadastro = document.querySelector("#modal-cadastro");

let abreModal = document.querySelector(".abre-modal");

let abreModalCadastro = document.querySelector(".abre-modal-cadastro");

let fechaModal = document.querySelector(".close");





//MODAL LOGIN

abreModal.onclick = function(){

        modal.style.display = "block";

}

abreModalCadastro.onclick = function(){


        modalCadastro.style.display = "block";

}



fechaModal.onclick = function(){


    modal.style.display = "none";
    modalCadastro.style.display = "none";

}

HTML

    <div id="modal-login">
                <div class="modal-content">
                    <span class="close">&times;</span>
                    <p>Login</p>
                    <input type="text" name="">
                    <p>Senha</p>
                    <input type="password" name="">
                    <button class="botao-entra" type="submit">Entrar</button>
                </div>
            </div>

            <div id="modal-cadastro">
                <div class="modal-content">
                    <span class="close">&times;</span>
                    <p>Login</p>
                    <input type="text" name="" required="required">

                    <p>E-mail</p>
                    <input type="E-mail" name="" required="required">

                    <p>Senha</p>
                    <input type="password" name="" required="required">
                    <button class="botao-entra" type="submit">Cadastrar</button>
                </div>
            </div>

最佳答案

document.querySelector()仅返回文档中与 CSS 选择器匹配的第一个元素。你可以这样做:

JS

function OpenForm(name){
  if (name === 'login') {
    document.querySelector("#modal-login").style.display = "block";
  } else if (name === 'register') {
    document.querySelector("#modal-cadastro").style.display = "block";
  }
}

function Close(name){
  if (name === 'login') {
    document.querySelector("#modal-login").style.display = "none";
  } else if(name === 'register') {
    document.querySelector("#modal-cadastro").style.display = "none";
  }
}

<div id="modal-login">
      <div class="modal-content">
        <span class="close" onclick="Close('login')">&times;</span>
        <p>Login</p>
        <input type="text" name="">
        <p>Senha</p>
        <input type="password" name="">
        <button class="botao-entra" type="submit">Entrar</button>
      </div>
    </div>
    <div id="modal-cadastro">
      <div class="modal-content">
        <span class="close" onclick="Close('register')">&times;</span>
        <p>Login</p>
        <input type="text" name="" required="required">

        <p>E-mail</p>
        <input type="E-mail" name="" required="required">

        <p>Senha</p>
        <input type="password" name="" required="required">
        <button class="botao-entra" type="submit">Cadastrar</button>
      </div>
    </div>
    <div>
      <button type="button" name="Login" class="abre-modal" onclick="OpenForm('login')">Login</button>
      <button type="button" name="Register" class="abre-modal-cadastro" onclick="OpenForm('register')">Register</button>
    </div>

#modal-login, #modal-cadastro {
        display: none;
      }

关于javascript - onclick 功能不起作用(更改样式),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57614479/

相关文章:

javascript - 在移动设备上来不及使用 display none, block

javascript - 使用javascript禁用onclick属性

javascript - 使用查找字符串设置深层 JS 对象键

javascript - 如果选中一个复选框,如何取消选中所有复选框?

jquery mobile事件taphold在图像上

html - 使用 flexbox 对齐左侧的 Logo 和右侧的导航链接

javascript - 在客户端从 Redis 获取新值

javascript - 无法访问socket.html

javascript - 使用 jquery 获取单选按钮的值

css - 如何确保用户看到新标识?