겠습니까 내게 이유를 설명하는 사람의 마음을 ... 내가 만들고 여러 개체를 저장하는 가장 좋은 방법을 찾기 위해 노력하고캡슐화 문제
$(document).ready(function() {
var scu = ['0291285', '0409338', '0521704', '0521990', '0523652', '0523657', '0523660', '0523704'];
var inData = $('#output');
var testdiv = $('#testdiv');
function Item(scu, description, price, extended, type) {
this.scu = scu;
this.description = description;
this.price = price;
this.extended = extended;
this.type = type;
//this.saved = function() {};
}
var rows = [];
function get() {
inData.html('');
$.each(scu, function(index, val) {
$.post('chBuild.php', {scu:val}, function(output) {
$.each(output, function(i, obj) {
var i = 0;
rows[i] = new Item(obj.scu, obj.description, obj.price, obj.extended, obj.type);
console.log(rows[i].price)
//this logs every object but...
i =+ 1;
});
}, 'json');
});
console.log(rows[0].price);
//this says rows[0] is undefined?
}
inData.click(get);
});
은.
'each' 안에'var i = 0'을하지 말아야합니다. 이렇게하면 모든 항목이'0'의 위치에 할당됩니다. 마지막 문장 ('i + = 1;')은 그 변수가 그 클로저 내에 만 존재하기 때문에 (즉, 반복의 모든 루프가'i'를 재정의 할 것이므로) 무의미합니다. 인자로 주어진'i'' ('function (i, obj) {')를 사용하면 정확한 결과를 얻을 수 있습니다. – mgibsonbr
@mgibsonbr이 돈을 받고있다면, 여분의'var i'는 항상 0이 될 것입니다. 또한'i = + 1'을 제거하십시오. – charlietfl