【问题标题】:Textbox display undefined文本框显示未定义
【发布时间】:2018-03-01 10:53:02
【问题描述】:

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" />

我的数据库

【问题讨论】:

    标签: javascript html firebase firebase-realtime-database


    【解决方案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 才能访问这些节点。

    【讨论】:

    • 没问题,编码愉快!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多