css 我无法通过javascript更改我的style.display属性

fumotvh3  于 2023-04-23  发布在  Java
关注(0)|答案(2)|浏览(164)

所以,我用html和css写了一段没有显示值的函数代码,但是如果我试图通过javascript更改它们,它只能在我放入的if语句之外工作,即使if语句为true(尝试通过console.log检查它)。
HTML代码块1:

<nav class="navbar">
    <a href="#" class="nav-logo">Skill Container</a>
    <ul class="nav-menu">
        <li class="nav-item">
          <button class="contact-btn">
            <a href="#" class="nav-link" onclick="toggleShowContact()"
                >Contact Us</a>
          </button>
        </li>
    </ul>
</nav>

HTML代码块2:

<div class="contact-form" style="display: none">
    <div style="font-size: 20px">
        <button class="btn-close" onclick="closeAll()">X</button>
        <h1 style="text-align: center">Contact Us</h1>
    </div>
</div>

CSS代码块,仅适用于.contact-form:

.contact-form {
  background: #fff;
  width: 500px;
  margin: 65px auto;
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
  flex-direction: column;
  border-radius: 4px;
  box-shadow: 0 2px 25px rgba(0, 0, 0, 0.2);
}

Javascript代码块:

const btnContact = document.querySelector(".contact-btn");
const contactForm = document.querySelector(".contact-form");

function closeAll() {
  loginForm.style.display = "none";
  registrationForm.style.display = "none";
  contactForm.style.display = "none";
}

closeAll();

contactForm.style.display = "none";

function toggleShowContact() {
  console.log(`${contactForm.style.display}`);
  if (contactForm.style.display === "none") {
    contactForm.style.display = "flex";
  }
}
k2fxgqgv

k2fxgqgv1#

也许你应该用途:if语句中的window.getComputedStyle(elem).getProperty(“display”)。
然后用途:elem.style.display:“Flex”来代替它。

function toggleShowContact() {
  if (window.getComputedStyle(contactForm).getProperty("display") === "none" ) {
    contactForm.style.display = "flex";
  }
2jcobegt

2jcobegt2#

原来的代码实际上非常好,我为导航栏写的其他一些html代码有一个问题,问题就是从那里开始的。

相关问题