我正在使用alert()进行测试,但是我的对象在我的for循环中更改之后无法提示我的变量的正确值。我想使用构造函数将值存储在对象中,但只存储我在开头设置的空值。
//declare the variables I'm going to use inside of my database query and for loop.
$(function(){
var uID = JSON.parse(localStorage.getItem( 'uID' ));
var hood = ' ';
var gender = ' ';
var birthday = ' ';
var zip = ' ';
Parse.initialize("ivHLAO7z9ml1bBglUN*******yCgKM2x","gNeGt04lU7xce*****BsIBSCVj");
$("#mainDiv").on('click', '.interested', function(){
//on click, use "uID" variable to query the parse database to get birthday, gender, neighborhood, and zip
var query = new Parse.Query(Parse.User);
query.equalTo("uID",uID);
query.find({
success: function(results) {
for(i = 0; i < results.length; i++){
//this is where the variable values declared at the beginning are supposed to be changed to the results of the query
hood = results[i].get("neighborhood");
gender = results[i].get("gender");
birthday = results[i].get("birthday");
zip = results[i].get("zipCode");
}
}//closes success
})//closes find
//my object constructor
function interested(neighborhood,sex, bDay, zipCode) {
this.hood = neighborhood;
this.gender = sex;
this.birthday = bDay;
this.zip = zipCode;
}
var intrstd = new interested(hood, gender, birthday,zip);
alert(intrstd.hood);
alert(intrstd.gender);
alert(intrstd.birthday);
alert(intrstd.zip);
});//closes on
答案 0 :(得分:3)
如果查询是异步的,则在这些变量更改之前构造对象。将警报移至正确范围:
//declare the variables I'm going to use inside of my database query and for loop.
$(function () {
var uID = JSON.parse(localStorage.getItem('uID'));
var hood = ' ';
var gender = ' ';
var birthday = ' ';
var zip = ' ';
Parse.initialize("ivHLAO7z9ml1bBglUN*******yCgKM2x", "gNeGt04lU7xce*****BsIBSCVj");
$("#mainDiv").on('click', '.interested', function () {
//on click, use "uID" variable to query the parse database to get birthday, gender, neighborhood, and zip
var query = new Parse.Query(Parse.User);
query.equalTo("uID", uID);
//my object constructor
function interested(neighborhood, sex, bDay, zipCode) {
this.hood = neighborhood;
this.gender = sex;
this.birthday = bDay;
this.zip = zipCode;
}
query.find({
success: function (results) {
for (i = 0; i < results.length; i++) {
//this is where the variable values declared at the beginning are supposed to be changed to the results of the query
hood = results[i].get("neighborhood");
gender = results[i].get("gender");
birthday = results[i].get("birthday");
zip = results[i].get("zipCode");
}
var intrstd = new interested(hood, gender, birthday, zip);
alert(intrstd.hood);
alert(intrstd.gender);
alert(intrstd.birthday);
alert(intrstd.zip);
} //closes success
}) //closes find
}); //closes on
});