当我将Javascript键对象放到控制台日志中时,我试图列出所有数据,但其中包含所有信息,但是当我想使用InnerHTML时,我只会得到第一个对象。
function gotData(data){
var scores = data.val();
var keys = Object.keys(scores);
for (var i = 0; i < keys.length; i++) {
var k = keys[i];
var pro = scores[k].result;
var doc = document.getElementById("result").innerHTML = pro;
}
}
在这种情况下,它只会为我提供Firebase第一个元素的结果
谢谢
答案 0 :(得分:0)
如果我了解您的预期结果,请检查一下stackblitz-demo,这看起来好像是您遗漏的一件小事。
onClick() {
const scores = [{
'one': 1
}, {
'two': 2
}, {
'three': 3
}, {
'four': 4
}, {
'five': 5
}];
var keys = Object.keys(scores);
for (let i = 0; i < keys.length; i++) {
const k = keys[i];
const pro = scores[k].result;
// here the += is what i think you're missing.
const doc = document.getElementById("example").innerHTML += k;
}
}
答案 1 :(得分:0)
问题在于您每次都覆盖innerHTML
。相反,您需要追加到现有的innerHTML
。将最后一行更改为...
const doc = document.getElementById("example").appendChild(document.createTextNode(k))
appendChild
也比设置innerHTML
答案 2 :(得分:0)
.hasOwnProperty
是仅查看存储值的方法。这有帮助吗?
d = snap.val();
for (var k in d) {
if (d.hasOwnProperty(k)) {
if (isObject(d[k]){
console.log(k, d[k]);
} else {
console.log (k);
}
}
}
function isObject(obj) {
return obj === Object(obj);
}