0

I want to dynamically hide table elements based on input from javascript. Normally I would use .getElementById() to access the tables that I want to show or hide, but I can't use HTML DOM for this. What alternatives are there?

5
  • Are you sure you mean you can't use the DOM? Or do you mean you can't access the element by id? Commented May 13, 2016 at 14:16
  • 2
    What do you mean exactly that you "can't" use the DOM? What's preventing you from doing it? If you "can't" use the DOM you cannot affect what the browser is showing, as the DOM is the API with which one does that. Commented May 13, 2016 at 14:16
  • Could you give more information of what input you are getting and how that relates to what you want to hide? Commented May 13, 2016 at 14:22
  • there has to be a trigger event Commented May 13, 2016 at 14:26
  • Are you using jQuery? Commented May 13, 2016 at 14:38

1 Answer 1

1

You can do this using just pure css. Abandon the js. Examine this snippet. It has a 'trigger' (in the show/hide button). I'm sure it can be adjusted for your purposes.

html {
  background: white
}
* {
  margin: 0;
  padding: 0;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  -ms-box-sizing: border-box;
  box-sizing: border-box;
}
figure {
  margin: 0 0 1.3rem 0;
  -webkit-transition: .125s linear;
  -moz-transition: .125s linear;
  -ms-transition: .125s linear;
  -o-transition: .125s linear;
  transition: .125s linear;
}
figure img {
  max-width: 100%;
  height: auto;
}
body {
  max-width: 480px;
  width: 90%;
  margin: 3em auto;
  font-size: 75%;
  line-height: 1.3rem;
  font-family: sans-serif;
  position: relative;
  *zoom: 1;
}
body:before,
body:after {
  content: "";
  display: table;
}
body:after {
  clear: both
}
p {
  margin-bottom: 1.3rem
}
article {
  margin-bottom: 3rem;
  position: relative;
  *zoom: 1;
}
article:before,
article:after {
  content: "";
  display: table;
}
article:after {
  clear: both
}
article figure {
  float: left;
  width: 32.5%;
}
article section:first-of-type {
  float: right;
  width: 62.5%;
}
article section:last-of-type {
  display: none;
  visibility: hidden;
}
section {
  -webkit-transition: .125s linear;
  -moz-transition: .125s linear;
  -ms-transition: .125s linear;
  -o-transition: .125s linear;
  transition: .125s linear;
}
input[type=checkbox] {
  border: 0;
  clip: rect(0 0 0 0);
  height: 1px;
  width: 1px;
  margin: -1px;
  overflow: hidden;
  padding: 0;
  position: absolute;
}
label {
  position: absolute;
  bottom: -3rem;
  left: 0;
  width: 100%;
  text-align: center;
  padding: .65rem;
  box-shadow: inset 1px 1px rgba(0, 0, 0, 0.1), inset -1px -1px rgba(0, 0, 0, 0.1);
}
label:hover {
  background: rgba(0, 0, 0, .5);
  color: rgb(255, 255, 255);
}
label span:last-of-type {
  display: none;
  visibility: hidden;
}
input[type=checkbox]:checked ~ section {
  display: block;
  visibility: visible;
  width: 100%;
}
input[type=checkbox]:checked ~ figure {
  width: 100%
}
input[type=checkbox]:checked ~ label span:first-of-type {
  display: none;
  visibility: hidden;
}
input[type=checkbox]:checked ~ label span:last-of-type {
  display: block;
  visibility: visible;
}
<body>
  <article>
    <input type="checkbox" id="read_more" role="button">
    <label for="read_more" onclick=""><span>Show</span><span>Hide</span>

    </label>
    <figure>
      <img src="http://www.musicmatters.ie/images/bara2.jpg" alt="Picture" />
    </figure>
    <section>
      <p>Short Intro goes here. Write whatever you like.</p>
    </section>
    <section>
      <p>Full article goes here. We'll make do with lorem ipsum. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec eu orci elit. Pellentesque vel risus tortor. Pellentesque ut diam mi. Nunc iaculis ante ac tempus scelerisque. Etiam vestibulum
        elementum quam et interdum. Integer vitae augue vitae nunc pulvinar scelerisque eu vitae justo. Mauris urna erat, ornare ut eros non, varius bibendum mauris. Vivamus dolor felis, tincidunt sed malesuada vel, ornare non ligula. Curabitur blandit
        massa vitae ullamcorper fermentum. Nam rutrum odio dui, vitae tempus dui maximus sed.</p>
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec eu orci elit. Pellentesque vel risus tortor. Pellentesque ut diam mi. Nunc iaculis ante ac tempus scelerisque. Etiam vestibulum elementum quam et interdum. Integer vitae augue vitae
        nunc pulvinar scelerisque eu vitae justo. Mauris urna erat, ornare ut eros non, varius bibendum mauris. Vivamus dolor felis, tincidunt sed malesuada vel, ornare non ligula. Curabitur blandit massa vitae ullamcorper fermentum. Nam rutrum odio dui,
        vitae tempus dui maximus sed.</p>
    </section>
  </article>

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

1 Comment

@RameenRastan btw, if this helps you, you can accept this answer by clicking the tick that appears when you hover beside it. We both earn reputation for it! :)

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.