2017-10-02 13 views
0

私はfirebaseデータベースから取得したアイテムを追加するid = bigTableのテーブルを持っています。今私が欲しいのは、アイテムをクリックしてキーを取得することです。 My機能は以下の通りです:アイテムをクリックしてください。

var itemKey; 

//READ FROM DATABASE 
function readFromDatabase() { 


    var database = firebase.database(); 
    database.ref("posts").child(currentCountry)  
     .on('value', function(snapshot){ 

    if(snapshot.exists()){ 
     var content = null; 


     $('#bigTable').empty();   


     snapshot.forEach(function(data){     

      var val = data.val(); 

      itemKey = data.key; 


      content +='<tbody>'; 
      content +='<tr>'; 
      content +='<td width="100px" height="100px">'; 
      content +='<img src="' + val.imageString + '" width="100%" onClick="getKey()">'+'</img>'; 

      content +='</td>'; 

      content +='<td>'; 
      content +='<table>'; 
      content +='<tbody>';  

      content +='<tr>'; 
      content +='<td>' + val.country+ '</td>'; 
      content += '</tr>'; 

      content +='<tr>'; 
      content +='<td>' + val.category + '</td>'; 
      content += '</tr>'; 

      content +='<tr>'; 
      content += '<td>' + val.city + '</td>';     
      content += '</tr>'; 


      content +='</tbody>'; 
      content +='</table>'; 
      content += '</tr>'; 
      content += '</tbody>';   


     }); 

     $('#bigTable').append(content); 
    } 
}); 


} 



function getKey(){ 

console.log(itemKey); 

}

をしかし、私はアイテムの画像をクリックすると、私は何を得る常に最初の項目のキーです。どうすれば私がクリックしたアイテムのキーを取得できますか?

答えて

0

ただ1つの変数の代わりにitemKeysのリストを作成する必要があります。変数はこの行のすべての子に対してオーバーライドされますitemKey = data.key;。したがって、コードを適宜変更する必要があります。私は私の例では配列を使用しますが、あなたがうまくいくと確信しています。

var itemKeys = []; 

とあなたのforEachループ内に

var itemKey; 

var index = 0 
snapshot.forEach(function(data) { 
    itemKeys[0] = data.key; 
    ... 

リストにキーを追加して、あなたの関数は、今この

function getKey(position) { 
    console.log(itemKeys[position]); 
} 

ようになります。 poを指定しなければならないあなたがもちろんキーを取得したいアイテムの場所。 私のJavascriptは最高ではありませんが、別の方法を使用することを検討することもできますが、これは一般的な考えであり、ES6標準をチェックアウトする可能性があります。

関連する問題