我有一个页面将 JSON 发布到 cfc,并返回成功/失败消息。构建 JSON 的数组包含已更新的输入字段的 ID。我正在更改元素的背景颜色以提醒用户进行了更新,但是当用户在不离开页面的情况下发布更多更改时就会出现问题。该数组仍然包含上一篇文章中的数据,无论我尝试清除数组的内容或位置,背景的更改都会停止工作。
这是代码:
$("input").change(function(){
theArray.push({
'id':$(this).attr('id'),
'value':$(this).val()
});
});
$("#edit_button").click(function(){
if(theArray.length >0){
theArray.push({
//some processing information to the cfc
});
theJson = JSON.stringify(theArray);
$.post("CFCs/fund_profile.cfc",
{
method:"updateProfile",
data:theJson
},
function(data){
if(data.HASERROR == 1){
$("#messageDiv").empty().html(data.MESSAGE);
}
else{
$("#messageDiv").empty().html(data.MESSAGE);
theArray.pop();//removing the cfc processing information
for(var i = 0; i <= theArray.length; i++){
var $el = $("#" = theArray[i].id).parent().parent().css('background','red');
setTimeout(function(){
$el.css('background','');
$("#messageDiv").empty();
},5000);
}
}
},
"json");
//THIS IS WHERE THE PROBLEM LIES (I THINK)
//I HAVE TRIED THE FOLLOWING:
var arrayLen = theArray.length;
for(var j = 0;j <= arrayLen; j++){
theArray.pop();
}//DOESN'T WORK
theArray.length = 0;
//DOESN'T WORK
for(var j = 0;j <= arrayLen; j++){
theArray.shift();
}//DOESN'T WORK
}
});
如果我删除代码以清除数组,则会发生背景更改,但数组永远不会丢失该元素,并且始终会显示该元素正在更新。如果我保留它,则根本不会发生背景更改。
我敢肯定,我错过了一些简单的事情,但我对此感到沮丧。
有什么想法吗?