3

I want that the text ist hidden in the beginning and after clicking the button it is displayed. I would be really greatfull if someone would find the mistake in my code.

function F1()
{
  var x = document.getElementById("step1DIV");
  if (x.style.display === "none") {
    x.style.display = "block";
  } else {
    x.style.display = "none";
  }
}
<!DOCTYPE html>
<html>

<body>

  <button onclick="F1()"> <b>Step 1</b> </button>
  <div id="step1DIV">
    <p> text </p>
  </div>

</body>

</html>

1
  • style.display is not available until it's set. I recommend having .hide{ display:none; } in CSS then have Element.classList.add('hide') and Element.classList.remove('hide') or Element.classList.toggle('hide'). Unless you want to do a lot of typing, I generally recommend using CSS classes to style. Commented Mar 11, 2020 at 23:18

4 Answers 4

2

You need to give it an initial style that hides it in the HTML.

function F1()
{
  var x = document.getElementById("step1DIV");
  if (x.style.display === "none") {
    x.style.display = "block";
  } else {
    x.style.display = "none";
  }
}
  <button onclick="F1()"> <b>Step 1</b> </button>
  <div id="step1DIV" style="display: none;">
    <p> text </p>
  </div>

But inline styles are poor design, it's better to use a class with CSS.

function F1()
{
  var x = document.getElementById("step1DIV");
  x.classList.toggle("hidden");
}
.hidden {
  display: none;
}
<button onclick="F1()"> <b>Step 1</b> </button>
  <div id="step1DIV" class="hidden">
    <p> text </p>
  </div>

Sign up to request clarification or add additional context in comments.

3 Comments

even better to utilize the HTML standard attribute hidden
@RonnieRoyston Classes and CSS are generally preferable because you can easily change the presentation in one place.
Specifically speaking to hiding elements though: The hidden attribute
0

I just defined it as 'none' to begin with as such:

<div id="step1DIV" style="display: none"> 

Comments

0

Try to initially set the display of your step1 DIV to none. Either using inline styling or CSS.

You can also try to run your function on page load.

Comments

0

You want to toggle the hidden attribute defined in the HTML Standard.

function F1 () {
  document.getElementById("a").toggleAttribute("hidden");
}
<!DOCTYPE html>
<html>

<body>

  <button onclick="F1()"> <b>Step 1</b> </button>
  <div id=a>
    <p> text </p>
  </div>

</body>

</html>

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.