文本框显示未定义

问题描述 投票:1回答:1

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

我的数据库

enter image description here

javascript html firebase firebase-realtime-database
1个回答
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才能访问这些节点。

© www.soinside.com 2019 - 2024. All rights reserved.