7

I am trying to create the following HTML code via javascript. For some reason, the bootstrap classes are not getting applied to the javascript code. Any help please?

<div class="form-group">
  <label for="inputText" class="col-sm-2 control-label">Comments</label>
  <div class="col-sm-10">
     <textarea class="form-control" rows = "3" id="inputText"  placeholder="Write your comments here"></textarea>
  </div>
</div>

I m trying to create this HTML using javascript as below. Not sure what I am missing.

var div = document.createElement('div');
div.class = 'form-group';
var label = document.createElement('label');
label.class = 'col-sm-2 control-label';
label.innerHTML = 'Comments';
label.for = 'inputText';
var div1 = document.createElement('div');
div1.class = 'col-sm-10';
var commentText = document.createElement('textarea');
commentText.class = 'form-control';
commentText.id = 'inputText';
commentText.rows = '3';
commentText.placeholder = 'Write your comments';
div.appendChild(label);
div1.appendChild(commentText);
div.appendChild(div1);

4 Answers 4

12

For some reason, the bootstrap classes are not getting applied to the javascript code

That because there's no function class, you should use className, check working snippet bellow.

div.className = 'form-group';

var div = document.createElement('div');
div.className = 'form-group';
var label = document.createElement('label');
label.className = 'col-sm-2 control-label';
label.innerHTML = 'Comments';
label.for = 'inputText';
var div1 = document.createElement('div');
div1.className = 'col-sm-10';
var commentText = document.createElement('textarea');
commentText.className = 'form-control';
commentText.id = 'inputText';
commentText.rows = '3';
commentText.placeholder = 'Write your comments';
div.appendChild(label);
div1.appendChild(commentText);
div.appendChild(div1);

document.body.appendChild(div);
<link href="https://netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script>

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

Comments

0

One can also use element.classList.add('custom-class') to append class name to class attribute.

Comments

0

This is simplly add bootstrap form-controll using javascript by clicking a button
HTML Bootstrap form input

<div id="dynamicInput">
    <div class="form-group" >
        <div class="input-group">
             <div class="input-group-prepend">
                  <span class="input-group-text">
                     1.
                  </span>
              </div>
        <input type="text" class="form-control" name="subjects" value="{{old('subjects') }}" id="learn" placeholder="They will learn..">
      </div>
    </div>
 </div>
<button type="button" onclick="addInput('dynamicInput');" class=" btn btn-primary ml-5">Add more &nbsp;&nbsp;<i class="fa fa-plus"></i></button>

And Javascripts

var counter = 1;

function addInput(divName){

  var group = document.createElement('div');
  group.className = 'form-group';
  var inputGroup = document.createElement('div');
  inputGroup.className = 'input-group';
  var inputGroupPre = document.createElement('div');
  inputGroupPre.className = 'input-group-prepend';
  var inputGroupText = document.createElement('span');
  inputGroupText.className = 'input-group-text';
  inputGroupText.innerHTML = counter + 1 +".";
  var input = document.createElement('input');
  input.className = 'form-control';
  input.type = 'text';
  input.name = 'subjects[]';
  input.placeholder = 'what they will learn';
  name='myInputs[]'>";

   //Appending elements
   document.getElementById(divName).appendChild(group);
   group.appendChild(inputGroup);
   inputGroup.appendChild(inputGroupPre);
   inputGroup.appendChild(input);
   inputGroupPre.appendChild(inputGroupText);
   counter++;

}

Comments

0

Did you load in jQuery and Bootstrap scripts before this script. Also the Bootstrap css? Also, if you really want to create the HTML from scripts, I believe its better to use jQuery - since you already should have it loaded. just put everything in the $( document ).ready() function.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.