未捕获的ReferenceError:在HTMLDivElement.onclick中未定义fn_get_data_oneid

时间:2019-11-23 10:27:48

标签: javascript firebase web

我是Firebase和Javascript的新手

我正在尝试拥有一个onclick函数,该函数应指向我更改文本框值的其他JavaScript函数。(用于修改)

但是有错误

错误->未捕获的参考错误:未定义fn_get_data_oneid     在HTMLDivElement.onclick

请告诉我解决方案。

   
 var auth;
 var db; 
 var userInfo; 
 var userInfo;
 var name;
 var selectedKey;

  $(document).ready(function() {
    auth = firebase.auth();
    db = firebase.database();
    userInfo = firebase.auth().currentUser;

   userSessionCheck();

   diaryList();


   function diaryList(){ 
     var diary_Ref = db.ref('Diary/');

     diary_Ref.on('child_added', on_diary_list);
   }


   function on_diary_list(data){

       var key = data.key;
       var Data = data.val();
       var contents = Data.contents;
       var title = Data.title;
       var name = Data.name;

       console.log(data.key);


    if(name == userInfo.displayName){
      var html =
      "<div id='" + key + "' onclick=\"fn_get_data_oneid(this.id);\" >" +
      '<div class="user_diary" style="float:left">' +
        '<ion-icon name="create" style="vertical-align: middle; margin-left: 10px;"></ion-icon>' +
        '<span style="font-weight: bold; font-size: 17px;">' + name +'</span>' +
        '<span style="float:right; margin-right:10px;" id="del_diary" onclick="fn_delete_date('+key+');">delete</span>' +
        '<span style="float:right; margin-right:10px;" id="update_diary">update</span>' +
        '</div>' +
      '<div class="result_form" style="width: 70%; overflow: hidden; display: block; margin-bottom:30px; float: left">' +
        '<div class="left" id="title">' +
          '<h4 style="font-weight: bold; margin: 10px;">'+
           '<ion-icon name="list"></ion-icon>' + title +
          '</h4>' +
         '</div>' +
        '<div class="left" style=" margin: 10px;">' +
         '<span style="margin: 10px 10px 10px 10px;  float: left; width: 95%; font-size: 15px; display: inline-block; padding-left:7px;">' +
          contents +
         '</span>' +
        '</div>' +
      '</div>' +
      '</div>';

      $('#diary_result').append(html);

    } else{
      var html =
      '<div class="user_diary" style="background: #777; float: right">' +
        '<ion-icon name="create" style="vertical-align: middle; margin-left: 10px;"></ion-icon>' +
        '<span style="font-weight: bold; font-size: 17px;">' + name +'</span>' +
       '</div>' +
      '<div class="result_form" style="width: 70%; overflow: hidden; display: block; margin-bottom:30px; float: right">' +
        '<div class="left">' +
          '<h4 style="font-weight: bold; margin: 10px;">'+
           '<ion-icon name="list"></ion-icon>' + title +
          '</h4>' +
         '</div>' +
        '<div class="left" style=" margin: 10px;">' +
         '<span style="margin: 10px 10px 10px 10px;  float: left; width: 95%; font-size: 15px; display: inline-block; padding-left:7px;">' +
          contents +
         '</span>' +
        '</div>' +
          '</div>' ;

      $('#diary_result').append(html);
    }



 }


   function fn_get_data_oneid(key){
   
     var diary_Ref = db.ref('Diary/' + key);
     diary_Ref.once('value').then(function(snapshot){
       $('#d_contents').val(snapshot.val().contents);
       $('#d_subject').val(snapshot.val().title);
     });
   }

   function fn_delete_date(key) {
   
     if (!confirm('delete?')) {
     return;
   }

   var diary_ref= db.ref('Diary/' + key);
   diary_ref.remove();

  };

   function save_data(){
     var diary_Ref = db.ref('Diary/');
     var contents = $('#d_contents').val();
  //   var name = displayName;
     var title = $("#d_subject").val();
     if (contents === '' || contents===' ' || title === '' || title === ' '){
       alert('title or contents == null');
       return;
     }


     if(selectedKey) {
       diary_Ref = db.ref('Diary/' + selectedKey);
       diary_Ref.update({
         'contents' : contents,
         'name' : name,
         'title': title
       });
     }
     else {
       var obj = {
         'contents' : contents,
         'name' : name,
         'title': title
       };

       diary_Ref.push(obj);
     }



   } // 


   var t = document.getElementById('d_submit');
    t.addEventListener('click', function(event){
      save_data();
      location.reload();

      if(userInfo){
        console.log('ok');

      }else{
        alert('x');
        location.reload();
      }
    });
    
    // update
    window.fn_get_data_oneid = function (key) 



}); // 


window.fn_get_data_oneid =函数(键)<-仍然出现错误

在此处输入图片描述

enter image description here enter image description here

1 个答案:

答案 0 :(得分:0)

fn_get_data_oneid是在您的就绪函数中定义的,但是从属性处理程序访问函数要求它们是全局范围的。

简单的解决方法是将您的function fn_get_data_oneid(key)更改为window.fn_get_data_oneid = function (key)(从而将其放入全局范围)。

但是,您还应该考虑在结果元素中查找元素(例如,通过querySelector)并修改其属性/内容,而不是像这样将HTML拼接在一起。