我想为自己的对象设置巫婆,可以在追加时识别相同的对象并将其掉落。
function ImageSet(){
this.set = [];
}
ImageSet.prototype.length = function(){return this.set.length}
ImageSet.prototype.process = function(imgObj){
var is_exist = false;
$.each(this.set, function(i){
if (this.set[i].imgHash == imgObj.imgHash){is_exist = true};
});
if (!is_exist){
this.set[this.set.length + 1] = imgObj;
return true;
}
return undefined;
}
var imagesChoosen = new ImageSet();
因此,当用户单击元素时,我创建了新对象,然后尝试将其附加到我的ImageSet中。
在第一个单击对象上成功追加到设置,但在第二个单击控制台上写入错误
TypeError: this.set is undefined if (this.set[i].imgHash == imgObj.imgHash){is_exist = true};
调用ImageSet的代码是:
$('#content_table a').click(function(event){
event.preventDefault();
el = new Image($(this).attr('href'));
if (imagesChoosen.process(el)){
$(this).parent().css("border", "3px dotted orange");
} else {
$(this).parent().css("border", "None");
}
console.log(imagesChoosen.length());
return false;
});
我听不懂第一次调用后我的ImageSet是否被破坏?
最佳答案
this.set[this.set.length + 1] = imgObj;
认为应该是:
this.set[this.set.length] = imgObj;
我对JQuery的每个函数不熟悉,但是以前的文章会指出此上下文的更改,因此我将针对每个函数进行更改:
$.each(this.set, function(i){
if (this.set[i].imgHash == imgObj.imgHash){is_exist = true};
});
至:
for(var i=0;i<this.set.length;i++){
if (this.set[i].imgHash == imgObj.imgHash){is_exist = true};
};