Javascript jquery访问事件列表器内的全局变量';这';不使用
我是初学者。我试图访问jquery事件列表器中的一个对象,但得到的不是未定义的就是TypeError。我尝试了几种方法,尝试以这种方式发送对象{results:result},但它不起作用,给了我未定义的错误。我找不到一个适合我的答案。 提前谢谢 Jquery完整代码Javascript jquery访问事件列表器内的全局变量';这';不使用,javascript,jquery,event-listener,Javascript,Jquery,Event Listener,我是初学者。我试图访问jquery事件列表器中的一个对象,但得到的不是未定义的就是TypeError。我尝试了几种方法,尝试以这种方式发送对象{results:result},但它不起作用,给了我未定义的错误。我找不到一个适合我的答案。 提前谢谢 Jquery完整代码 $(document).ready(function() { //var $addhere = $("#addhere"); $.ajax({ type: "GET", url: "/newsfeed/retrie
$(document).ready(function() {
//var $addhere = $("#addhere");
$.ajax({
type: "GET",
url: "/newsfeed/retrieve",
//datatype: "JSON",
success: function(datas){
//console.log(data);
// Check the length of success data.data
const data = datas;
var datalength = Object.keys(data.data).length;
// Calling the result function
var count = 0;
result(data, datalength);
reactions(data, datalength, count);
}
});
function result(result, datalength){
// Values are here im result
console.log(result);
var myPostHtml = '';
// Values in the first place of object array
//console.log(result.data[0].uploads);
for(i=0;i<datalength;i++)
{
//if(result.data[i].uploads.attr("src", "No files uploaded")){
//$("img").hide();
//}
myPostHtml += `<img src="${result.data[i].uploads}" id="contentAreaHomePageTweetPhoto" alt="post-image" class="img-responsive post-image" />
<div class="post-container">
<img src="${result.data[i].uploads}" id="" alt="user" class="profile-photo-md pull-left" />
<div class="post-detail">
<div class="user-info">
<h5><a href="/timeline" id="" class="profile-link">${result.data[i].username}</a> <!--<span class="following">following</span>--></h5>
<p class="text-muted"id="contentAreaHomePageTime">${result.data[i].createdAt}</p>
</div>
<div class="reaction">
<button class="btn text-green" id="contentAreaHomePageLikeButton${result.data[i]._id}"><i class="icon ion-thumbsup"></i>0</button>
<button class="btn text-red" id="contentAreaHomePageUpdateButton${result.data[i]._id}"><i class="fa fa-pencil-square-o"></i></button>
<button class="btn text-red" id="contentAreaHomePageDeleteButton${result.data[i]._id}"><i class="icon ion-android-delete"></i></button>
</div>
<div class="line-divider"></div>
<div class="post-text">
<p><i class="em em-anguished"></i> <i class="em em-anguished"></i> <i class="em em-anguished"></i></p>
</div>
<!--<div class="line-divider"></div>-->
<div class="">
<!--<img src="images/users/user-11.jpg" alt="" class="profile-photo-sm" />-->
<p id="contentAreaHomePagePostText"><b><!--<a href="/timeline" class="profile-link"></a><i class="em em-laughing"></i>-->${result.data[i].post}</b></p>
<!--</div>
<div class="post-comment">
<img src="images/users/user-4.jpg" alt="" class="profile-photo-sm" />
<p><a href="/timeline" class="profile-link">John</a> Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud </h5>
</div>
<div class="post-comment">
<img src="images/users/user-1.jpg" alt="" class="profile-photo-sm" />
<input type="text" class="form-control" placeholder="Post a comment">
</div>-->
</div>
</div>
</div>
<div class="line-divider"></div>`
};
$(".post-content").append(myPostHtml);
};
function reactions(result, datalength, count){
console.log("Entered inside", result, datalength);
for(i=0;i<datalength;i++){
$('#contentAreaHomePageLikeButton'+result.data[i]._id).on('click', {results: result}, function(event){
console.log("I am button",$(this), event.data.results.data[i]);
var like = {
id: event.data.results.data[i]._id
}
console.log("This is the like",like);
//passdata = result.data.[i]_id;
//$(this).html(count);
$.ajax({
url: "/newsfeed/update",
type: "POST",
datatype: "JSON",
data: {id: result.data[i]._id},
success: function(data){
$("#contentAreaHomePageLikeButton"+result.data[i]._id).html(count++);
}
});
})
$('#contentAreaHomePageUpdateButton'+result.data[i]._id).on('click', function(){
console.log("I am Button");
//$(this).html("Mayank");
$.ajax({
url: "/newsfeed/update",
type: "POST",
datatype: "JSON",
data: {id: result.data[i]._id},
success: function(data){
$("#contentAreaHomePageUpdateButton"+result.data[i]._id).html(count++);
}
});
})
$('#contentAreaHomePageDeleteButton'+result.data[i]._id).on('click', function(){
console.log("I am Button");
console.log("I am Button", result.data[i]._id);
//$(this).html("Mayank");
$.ajax({
url: "/newsfeed/delete",
type: "POST",
datatype: "JSON",
data: {id: result.data[i]._id},
success: function(data){
$("#contentAreaHomePageDeleteButton"+result.data[i]._id).hide();
}
});
})
$(文档).ready(函数(){
//var$addhere=$(“#addhere”);
$.ajax({
键入:“获取”,
url:“/newsfeed/retrieve”,
//数据类型:“JSON”,
成功:功能(数据){
//控制台日志(数据);
//检查成功数据的长度。数据
常数数据=数据;
var datalength=Object.keys(data.data).length;
//调用result函数
var计数=0;
结果(数据、数据长度);
反应(数据、数据长度、计数);
}
});
函数结果(结果、数据长度){
//这些值是我的结果
控制台日志(结果);
var myPostHtml='';
//对象数组第一位的值
//console.log(result.data[0]。上传);
对于(i=0;i
${result.data[i].post}
我想说你可能被“闭包”绊倒了。这里有一个外部循环,它发出异步JavaScript请求。神奇的是,I
的当前值对他们是可用的。但是不能保证数据[]
当语句实际执行时,数组实际上包含该元素
我在这里看到了各种其他印刷错误问题…result
与results
等等。非常仔细地检查您的逻辑,确保您完全理解它应该做什么。第一个循环仅用于将html从js文件附加到html文件。在第二个循环中,我添加eventli没有循环嵌套。我尝试将{results:result}作为stackoverflow上提到的答案之一发送到eventlistner,但它不起作用。它还说像这样访问它。event.data.results.data[I].\u id我计划将数据发送到我的mongodb数据库。我一个月前才开始使用jquery。所有后台都关闭在应该关闭的位置。我知道逻辑不好。数据和结果后来只是为了检查而添加的。result.data[I]。\u id只能在事件列表器中访问。
for(i=0;i<datalength;i++){
$('#contentAreaHomePageLikeButton'+result.data[i]._id).on('click', {results: result}, function(event){
console.log("I am button", event.data.results.data[i]); // This gives undefined
var like = {
id: event.data.results.data[i]._id
}
console.log("This is the like",like); // This gives typeerror exact error added at end
//passdata = result.data.[i]_id;
//$(this).html(count);
$.ajax({
url: "/newsfeed/update",
type: "POST",
datatype: "JSON",
data: {id: result.data[i]._id},
success: function(data){
$("#contentAreaHomePageLikeButton"+result.data[i]._id).html(count++);
}
});
})