Javascript 为什么我会得到“;未定义”;在我的Firebase应用程序的表中?
我正在尝试创建一个从Firebase检索数据并使用JavaScript在表中显示的应用程序。问题是,它在应用程序和控制台中向我显示“未定义”,当我尝试直接从函数打印值时,它们包含一个值,所以有人能帮我吗 这是我的代码:Javascript 为什么我会得到“;未定义”;在我的Firebase应用程序的表中?,javascript,html,firebase,firebase-realtime-database,Javascript,Html,Firebase,Firebase Realtime Database,我正在尝试创建一个从Firebase检索数据并使用JavaScript在表中显示的应用程序。问题是,它在应用程序和控制台中向我显示“未定义”,当我尝试直接从函数打印值时,它们包含一个值,所以有人能帮我吗 这是我的代码: function doSomething() { var something = firebase.database().ref('*****'); //comment selection something.on('value', function gotDat
function doSomething() {
var something = firebase.database().ref('*****');
//comment selection
something.on('value', function gotData(data) {
var values = data.val();
var keys = Object.keys(values);
var i = 0;
while (i < keys.length) {
var k = keys[i];
var comments = values[k].comment;
var idU = values[k].id;
var idS = values[k].idservice;
var nom = getuser(idU);
var service = getservice(idS);
var tr = document.createElement('tr');
var td = document.createElement('td');
var td2 = document.createElement('td');
var td3 = document.createElement('td');
var t = document.createTextNode(i + ':' + comments);
var t2 = document.createTextNode(nom);
var t3 = document.createTextNode(service);
td.appendChild(t);
td2.appendChild(t2);
td3.appendChild(t3);
tr.appendChild(td);
tr.appendChild(td2);
tr.appendChild(td3);
document.getElementById("commentsection").appendChild(tr);
i++;
}
}, errData);
}
function getuser(IdU) {
var users = firebase.database().ref('******');
users.on('value', function getData(data) {
var values = data.val();
var keys = Object.keys(values);
var j = 0;
while (j < keys.length) {
var k = keys[j];
if (k === IdU) {
var name = values[k].nom;
console.log(name);
return name;
break;
} else {
console.log('not found');
break;
}
j++;
}
}, errData);
}
function getservice(IdS) {
var service = firebase.database().ref('******');
service.on('value', function getData(data) {
var values = data.val();
var keys = Object.keys(values);
var s = 0;
while (s < keys.length) {
var k = keys[s];
if (k === IdS) {
var nomservice = values[k].nomservice
console.log(nomservice);
return nomservice;
break;
} else {
return false;
}
s++;
}
}, errData);
}
function errData(err) {
console.log('error!');
console.log(err);
}
函数doSomething(){
var something=firebase.database().ref('*****');
//评论选择
关于('value',函数gotData(data){
var values=data.val();
var keys=Object.keys(值);
var i=0;
while(i
这是我得到的屏幕截图:
在
getservice
中,while
循环最多运行一次,s++
将永远无法到达,因为这两种可能的条件都是return
ing。非常感谢您快速回答,但您能解释更多吗?我没有理解您的意思。return
会导致函数退出。那么在哪种情况下会到达s++
?哦,我明白了,我将“return”位置更改为函数的末尾,但这次我得到了这个错误“uncaughtreferenceerror:nomservice未定义”