LlamaButt
LlamaButt

Reputation: 461

Adding to a <div> element using innerHtml creates a new line?

I have a tool that is supposed to be an easy way to create a checklist, and it works, but what happens when I use it for something with two checkboxes, it creates a new line between each one, is there a way to stop it from doing that? my code is here for yes/no

<!DOCTYPE html>
<html>
  <h1>Create a checklist</h1>
  <div>
    <input type="text" placeholder="Text for object" id="txt" />
    <button onclick="addYN()">Add yes/no</button>
  </div>
</html>
<div style="background-color: grey;" id="prv"></div>
<script>
  var pv = document.getElementById("prv");
  var txt = document.getElementById("txt");
  function getVarYn() {
    let tx = txt.value;
    return (
      "<div><p>" +
      tx +
      "</p> <p> yes</p> <input type = 'checkbox'/> <p>no </p> <input type = 'checkbox'/> </div> "
    );
  }
  function addYN() {
    var t = txt.value;
    pv.innerHTML = pv.innerHTML + getVarYn();
  }
</script>

Upvotes: 0

Views: 36

Answers (1)

caramba
caramba

Reputation: 22480

The problem is not the <div> you create but all the <p> tags. <p> tags are paragraphs and they do create "a new block/line"

See like so you would have no new lines

  var pv = document.getElementById("prv");
  var txt = document.getElementById("txt");
  function getVarYn() {
    let tx = txt.value;
    return (
      "<div>" +
      tx +
      "&nbsp;yes<input type = 'checkbox'/>no<input type = 'checkbox'/> </div> "
    );
  }
  function addYN() {
    var t = txt.value;
    pv.innerHTML = pv.innerHTML + getVarYn();
  }
<h1>Create a checklist</h1>
  <div>
    <input type="text" placeholder="Text for object" id="txt" />
    <button onclick="addYN()">Add yes/no</button>
  </div>
<div style="background-color: grey;" id="prv"></div>

Note: the closing </html> element should always be the very last element of your HTML document. And everything else should be inside the <body> element which you do not have. The basic structure looks like so

<!DOCTYPE html>
<html>
  <body>

    <!-- ADD all your HTML content here -->
    <h1>My First Heading</h1>
    <p>My first paragraph.</p>
    

    <!-- BUT NOW you need to finish with all the HTML here -->
    <!-- THE VERY LAST thing here before the closing </body> -->
    <!-- should be the <script> tags -->
  </body>
</html>

Upvotes: 2

Related Questions