我是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 =函数(键)<-仍然出现错误
在此处输入图片描述
答案 0 :(得分:0)
fn_get_data_oneid
是在您的就绪函数中定义的,但是从属性处理程序访问函数要求它们是全局范围的。
简单的解决方法是将您的function fn_get_data_oneid(key)
更改为window.fn_get_data_oneid = function (key)
(从而将其放入全局范围)。
但是,您还应该考虑在结果元素中查找元素(例如,通过querySelector)并修改其属性/内容,而不是像这样将HTML拼接在一起。