2016-10-07 6 views
-1

Я пытался это сделать, но это не работает, мой объект имеет 2 элемента, и он возвращает только один элемент:/Как получить длину объекта?

Вот код у меня есть

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")); 
}; 
+0

'Object.keys (obj) .length' – naththedeveloper

+0

Вы пытались' Object.keys (obj) .length' –

+0

Если вы пытаетесь получить количество свойств в своем объекте 'tiles', обратите внимание, что показанный код не передает этот объект 'getObjectLength()'. Если вы просто хотите знать, сколько элементов имеет класс 'jumbotron', вы можете сказать' document.getElementsByClassName («jumbotron»). Length', потому что '.getElementsByClassName()' возвращает список с свойством '.length'. – nnnnnn

ответ

0

Используйте Object.keys(obj).length, чтобы получить длина объекта

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

Ваша функция «гето bjectLength»также работает и возвращает 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));

Я угадываю, вы получаете счет 1, потому что есть только один элемент с именем класса„JumboTron“.

getObjectLength(document.getElementsByClassName("jumbotron"))

0

Попробуйте Object.keys(obj).length методу

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

console.log(Object.keys(tiles).length); 
0
document.getElementsByClassName("jumbotron")[0].innerHTML = document.getElementsByClassName("jumbotron").length; 

попробовать это. Ваша функция ищет длину объекта json.

Смежные вопросы