BenP
BenP

Reputation: 191

How to create elements, set attribute, use innerHTML, and appendChild with JS and DOM

I am writing a sample program in HTML/JS to demonstrate creating an array of user-defined objects (property/value), creating an element, adding data from the object array using innerHTML, and then appending the newly filled element to print it using appendChild();

For some reason, running the program provides no output besides what I hard-code as debugging. View source is also not very helpful given the language.

Please forgive me for the simple question, I am new to JS and have spent many hours reading many resources - I feel I am probably missing something small.

Thank you!!

<title>
This is my title.
</title>

<body>
<p>xXx<br/></p>
<script>

var array = new Array();

var thing1 = {
property: "value-1"
};

        var thing2 = {
        property: "value-2"
        };


        array.push(thing1);
        array.push(thing2);

        for (index = 0; index < array.length; ++index) {

            test_el = document.createElement("p");

            test_el.innerHTML(array[index].property);

            document.body.appendChild(test_el);

        };
        //I wish to print 'value' text into the body from my object, that is all

</script>
</body>

Upvotes: 5

Views: 1853

Answers (1)

Pietro Nadalini
Pietro Nadalini

Reputation: 1800

Your error seems to be with innerHTML, that is not a function, so you should put that value equal to something. I have corrected your code so you can see the result.

var array = new Array();
var thing1 = {
  property: "value-1"
};
var thing2 = {
  property: "value-2"
};

array.push(thing1);
array.push(thing2);

for (index = 0; index < array.length; ++index) {
  test_el = document.createElement('p');

  test_el.innerHTML = array[index].property;

  document.body.appendChild(test_el);
};
<title>
  This is my title.
</title>

<body>
  <p>xXx<br/></p>
</body>

Upvotes: 6

Related Questions