Javascript FOR循环后的事件处理程序
问题:Javascript FOR循环后的事件处理程序,javascript,for-loop,event-handling,Javascript,For Loop,Event Handling,问题: if (playerStatus == "active"){ //GET MESSAGES var Message = Parse.Object.extend("Messages"); var query = new Parse.Query(Message); query.equalTo("Game", g
if (playerStatus == "active"){
//GET MESSAGES
var Message = Parse.Object.extend("Messages");
var query = new Parse.Query(Message);
query.equalTo("Game", gameJSON);
query.ascending("createdAt");
query.find().then(function(results) {
for (var i = 0; i < results.length; i++) {
messagesIds.push(results[i].id);
messages.push(results[i].get("Message"));
votes.push(results[i].get("Votes"));
}
console.log(results);
//DISPLAY MESSAGES
var text = "<ul>";
for (i = 0; i < messages.length; i++) {
text += "<li class='messageContainer' id='" + messagesIds[i] + "_container " + "' value='" + messagesIds[i] + "'>";
text += "<div class='voteContainer' id='vote_" + messagesIds[i] + "' value='" + messagesIds[i] +"'>" + votes[i] + "</div></div>";
text += "</li>";
}
text += "</ul>";
//Ammend HTML
document.getElementById("messagesContainer").innerHTML = text;
//VOTING [not working]
for (i = 0; i < messages.length; i++) {
$('#vote_' + messagesIds[i]).on('click',function() {
var votingOn = $(this).val();
console.log(this);
var Messages = Parse.Object.extend("Messages");
var query = new Parse.Query(Messages);
query.get(votingOn).then(function(results){
results.increment("Votes");
results.save();
console.log("Voted");
}, function(error) {
console.log("Voting Error: " + error.message);
}
})
}
}) //end function(results)
}; //end if player = active clause
我无法正确执行事件处理程序$(“#投票+messagesIds[I])。请单击(函数()
。单击圆圈时,事件处理程序将运行,但结果是错误。消息返回“未找到对象”
问题是,votingOn
是未定义的
,因为无法获取此
的值。但是,控制台.log(this);
正确显示的id
和值
处理程序引用上面在文本
的第三行上创建的一个圆圈。事件处理程序位于函数(结果)
的内部,其中消息SID
被声明并发生在FOR
循环之后,该循环修改HTML以显示按钮
请帮忙
代码:
if (playerStatus == "active"){
//GET MESSAGES
var Message = Parse.Object.extend("Messages");
var query = new Parse.Query(Message);
query.equalTo("Game", gameJSON);
query.ascending("createdAt");
query.find().then(function(results) {
for (var i = 0; i < results.length; i++) {
messagesIds.push(results[i].id);
messages.push(results[i].get("Message"));
votes.push(results[i].get("Votes"));
}
console.log(results);
//DISPLAY MESSAGES
var text = "<ul>";
for (i = 0; i < messages.length; i++) {
text += "<li class='messageContainer' id='" + messagesIds[i] + "_container " + "' value='" + messagesIds[i] + "'>";
text += "<div class='voteContainer' id='vote_" + messagesIds[i] + "' value='" + messagesIds[i] +"'>" + votes[i] + "</div></div>";
text += "</li>";
}
text += "</ul>";
//Ammend HTML
document.getElementById("messagesContainer").innerHTML = text;
//VOTING [not working]
for (i = 0; i < messages.length; i++) {
$('#vote_' + messagesIds[i]).on('click',function() {
var votingOn = $(this).val();
console.log(this);
var Messages = Parse.Object.extend("Messages");
var query = new Parse.Query(Messages);
query.get(votingOn).then(function(results){
results.increment("Votes");
results.save();
console.log("Voted");
}, function(error) {
console.log("Voting Error: " + error.message);
}
})
}
}) //end function(results)
}; //end if player = active clause
if(playerStatus==“活动”){
//获取消息
var Message=Parse.Object.extend(“消息”);
var query=newparse.query(消息);
query.equalTo(“游戏”,gameJSON);
升序查询(“createdAt”);
query.find().then(函数(结果){
对于(var i=0;i”;
对于(i=0;i
这是$(这)一个输入吗?没有控制台错误,但是错误。消息
(反映处理请求时Parse.com的错误)发回投票错误:找不到对象
。此错误与查询.get(votingOn)中未定义的投票有关
。若要动态绑定事件,您需要执行以下操作:$('#vote_'+messagesIds[i])。在('click',function(){})@SuchitKumar上,尝试了该操作,但没有导致任何更改。请参阅此帖子: