Query1从firebase数据库中检索数据并显示在下拉列表中。确认函数是获取下拉列表值并与数据库匹配,然后将数据库数据显示到文本框中。但文本框显示未定义。
var firebaseRef = firebase.database().ref('facility');
var query1 = firebaseRef.orderByKey();
query1.on("child_added", function(snapshot) {
var facrecord1 = snapshot.val();
console.log(facrecord1.schedulename);
$("#select_schedule").append("<option>"+ facrecord1.schedulename +"</option>" );
});
function comfirm(){
var ds = document.getElementById("select_schedule");
var select_update = ds.options[ds.selectedIndex].value;
window.alert(select_update);
var match_query = firebaseRef.orderByChild('schedulename').equalTo(select_update);
match_query.once('value',function(snapshot){
snapshot.forEach(function(child){
var up = document.getElementById("update_name").value = snapshot.val().schedulename;
var uf = document.getElementById("update_fees").value = snapshot.val().fees;
})
});
}
&#13;
<label style="color: #f2f2f2">Schedule</label> <br/>
<select id="select_schedule">
</select>
<br/>
<button onclick="comfirm()" id="comfirm">Comfirm</button>
<label style="color: #f2f2f2">Schedule Name</label> <br/>
<input type ="text" id="update_name" name="update_name" />
<label style="color: #f2f2f2">Fees</label><br/>
<input type="number" name="update_fees" id="update_fees" min="1" />
&#13;
我的数据库
答案 0 :(得分:1)
改变这个:
match_query.once('value',function(snapshot){
snapshot.forEach(function(child){
var up = document.getElementById("update_name").value = snapshot.val().schedulename;
var uf = document.getElementById("update_fees").value = snapshot.val().fees;
})
});
进入这个:
match_query.once('value',function(snapshot){
snapshot.forEach(function(child){
var up = document.getElementById("update_name").value = child.val().schedulename;
var uf = document.getElementById("update_fees").value = child.val().fees;
})
});
因为ForEach
在子节点内迭代,所以你需要使用child.val().schedulename
才能访问这些节点。