0

I've been trying to do it, but it's not working, my object has 2 elements, and it returns 1 element only :/

Here's the code I have

var jumbo = document.getElementsByClassName("jumbotron");
var button = document.getElementById("changebg");

var tiles = {
  tile1 : {
    header : "header1",
    desc : "desc1"
  },
  tile2 : {
    header : "header2",
    desc : "desc2"
  }
};

function getObjectLength(obj){
  var count = 0;
  for ( var i in obj) {
    if (obj.hasOwnProperty(i)) {
      count++;
    };
  };
  return count;
};

function changeBackground(){
  document.getElementsByClassName("jumbotron")[0].innerHTML = getObjectLength(document.getElementsByClassName("jumbotron"));
};
buoyantair
  • 347
  • 4
  • 11
  • `Object.keys(obj).length` – naththedeveloper Oct 07 '16 at 06:44
  • did you try `Object.keys(obj).length` – Aatif Bandey Oct 07 '16 at 06:44
  • If you are trying to get the number of properties in your `tiles` object, note that the code shown doesn't pass that object to `getObjectLength()`. If you just want to know how many elements have the class `jumbotron` you can say `document.getElementsByClassName("jumbotron").length`, because `.getElementsByClassName()` returns a list that has a `.length` property. – nnnnnn Oct 07 '16 at 06:56

3 Answers3

0

Use Object.keys(obj).length to get the length of Object

    var tiles = {
      tile1 : {
        header : "header1",
        desc : "desc1"
      },
      tile2 : {
        header : "header2",
        desc : "desc2"
      }
    };
    
    console.log(Object.keys(tiles ).length);

Your function "getObjectLength" also works and returns 2

var tiles = {
  tile1 : {
    header : "header1",
    desc : "desc1"
  },
  tile2 : {
    header : "header2",
    desc : "desc2"
  }
};

function getObjectLength(obj){
  var count = 0;
  for ( var i in obj) {
    if (obj.hasOwnProperty(i)) {
      count++;
    };
  };
  return count;
};


console.log(getObjectLength(tiles));

I am guessing, you are getting count 1 because there is only one element with the class name "jumbotron".

getObjectLength(document.getElementsByClassName("jumbotron"))

Flying Gambit
  • 1,238
  • 1
  • 15
  • 32
0

Try Object.keys(obj).length method

var tiles = {
 tile1 : {
   header : "header1",
   desc : "desc1"
 },
 tile2 : {
   header : "header2",
   desc : "desc2"
 }
}

console.log(Object.keys(tiles).length);
Aatif Bandey
  • 1,193
  • 11
  • 14
0
document.getElementsByClassName("jumbotron")[0].innerHTML = document.getElementsByClassName("jumbotron").length;

try this. your function is looking for json object length.

aasiph
  • 237
  • 2
  • 7