我在所有函数之外声明了一个对象creationParams
。在整个功能中将操纵该对象。但是,在将对象推入数据类型为creationParams
的{{1}}的属性时遇到问题。
代码
Array
出现错误“无法读取未定义的属性'push'” 。我只希望将我的对象推到数组。我尝试制作另一个数组并将其推入数组,然后它起作用了。
更新:我尝试了var creationParams = {};
creationParams.Project = {};
creationParams.Project.Workplaces = [];
$(#foo).click(function() { //this is the function that runs before someid
//input validations here...
creationParams.Org = $('#SelectedOrg').val();
creationParams.Token = '';
});
$('#someid').click(function () {
$(this).attr('href', '#');
function isWpExisting(o) {
for (var cntr = 0; cntr < creationParams.Project.Workplaces; cntr++) {
if (creationParams.Project.Workplaces[cntr].Name.toUpperCase() === o) {
return true;
}
}
return false;
}
if ($('#wp-name').val() === '') {
$('#wp-name').addClass("error-field").attr("data-original-title", "Please enter Workplace Name");
$(this).attr('href', '#');
}
else if (isWpExisting($('#wp-name').val().toUpperCase()) === true && !$('#wp-wpcreate').attr('wp-edit')) {
$('#wp-name').addClass("error-field").attr("data-original-title", "This Workplace is already existing");
$(this).attr('href', '#');
}
else {
$(this).attr('href', '#divWp-one');
$('#wp-name').removeClass("error-field").removeAttr("data-original-title");
var workPlace= {};
workPlace.Name = $('#wp-name').val();
workPlace.Description = $('#wp-description').val();
if ($('#wp-wpcreate').attr('wp-edit')) {
for (var t = 0; t < creationParams.Project.Workplaces.length; t++) {
if (creationParams.Project.Workplaces[t].Name === $('#wp-wpcreate').attr('wp-edit')) {
creationParams.Project.Workplaces[t] = workPlace;
$('#wp-wpcreate').attr('wp-edit', '');
}
}
}
else {
creationParams.Project.Workplaces.push(workPlace);
}
}
});
//
...some more functions here
//
,并给了我console.log(creationParams.Project.Workplaces);
。
更新2:我通过在undefined
函数中移动creationParams.Project.Workplaces
的完整初始化来使其工作。我不知道为什么,在不同的地方初始化它有什么区别?
问题