Javascript Can';t访问对象数组
我正在用Javascript Can';t访问对象数组,javascript,jquery,arrays,object,Javascript,Jquery,Arrays,Object,我正在用push()函数的对象填充数组。然后,当我在customTimer函数中尝试访问此数组单元格时,我将作为参数传递给customTimer函数,但我无法访问。 我尝试了一些方法,比如rebojar[0],rebojar[“0”]等等。 当我尝试console.log(“qweqew”,typeof refobjar)时,它返回object,我尝试console.log(“Array:,arr)我可以看到对象,但无论如何我都无法访问 当我使用jQuery makeArray()时 它给了我
push()
函数的对象填充数组。然后,当我在customTimer
函数中尝试访问此数组单元格时,我将作为参数传递给customTimer
函数,但我无法访问。
我尝试了一些方法,比如rebojar[0],rebojar[“0”]
等等。
当我尝试console.log(“qweqew”,typeof refobjar)
时,它返回object,我尝试console.log(“Array:,arr)
我可以看到对象,但无论如何我都无法访问
当我使用jQuery makeArray()时
它给了我真实的答案,但我仍然无法通过
更新:
for (var i = 0; i < detayBodyArray.length; i++) {
$.ajax({
type: "GET",
url: apiAdress + '/api/Gosterge/defParameters?ekrandetayId=' + detayId[i] + '&bodyIdIndex=' + i,
dataType: "json",
success: function (veri) {
n = detayId.indexOf(veri[2].ekrandetayId);
setRefObj[n] = {};
setRefObj[n].yS = parseInt(veri[2].value);
setRefObj[n].kS = parseInt(veri[2].value);
setRefObj[n].ekrandetayId = detayId[veri[2].index]
setRefObj[n].bodyId = bodyId[n];
setRefObj[n].gostergeTip = tip[n];
setRefObj[n].gostergeUrl = url[n];
setRefObj[n].gostergeUrlTip = urlTipi[n];
},
error: function (msg) {
alert(msg.responseText);
},
beforeSend: function (xhr, settings) { xhr.setRequestHeader('Authorization', 'Bearer ' + token); }
});
if (i === detayBodyArray.length - 1) {
customTimer();
}
}
for(变量i=0;i
detayBodyArray来自另一个函数,REFBJARR是一个全局数组我用另一种方法解决了这个问题。我创建了这样的简单类
class refIndicator {
constructor(ekrandetayId, bodyId, gostergeTip, gostergeUrl, gostergeUrlTip, yS, kS) {
this.ekrandetayId = ekrandetayId
this.bodyId = bodyId
this.gostergeTip = gostergeTip
this.gostergeUrl = gostergeUrl
this.gostergeUrlTip = gostergeUrlTip
this.yS = yS
this.kS = kS
}
}
然后在ajax请求中填写created和fill引用,然后推送到全局数组中,它就可以工作了
for (var i = 0; i < detayBodyArray.length; i++) {
$.ajax({
type: "GET",
url: apiAdress + '/api/blabla/bla/ekrandetayId=' + detayId[i],
dataType: "json",
success: function (veri) {
n = detayId.indexOf(veri[2].ekrandetayId);
setRefObj = new refIndicator(detayId[veri[2].index], bodyId[n], tip[n], url[n], urlTipi[n], parseInt(veri[2].value), parseInt(veri[2].value));
refObjArr.push(setRefObj)
if (refObjArr.length === detayBodyArray.length - 1) {
customTimer()
}
},
error: function (msg) {
alert(msg.responseText);
},
beforeSend: function (xhr, settings) { xhr.setRequestHeader('Authorization', 'Bearer ' + token); }
});
}
function customTimer() {
console.log("custom Timer -> refObjArr : ", refObjArr[2])
console.log("custom Timer -> refObjArr kS : ", refObjArr[2].kS)
console.log("custom Timer -> refObjArr edId : ", refObjArr[2].ekrandetayId)
console.log("custom Timer -> refObjArr bId : ", refObjArr[2].bodyId)
console.log("custom Timer -> refObjArr gTip : ", refObjArr[2].gostergeTip)}
for(变量i=0;i重新定位:”,重新定位[2])
log(“自定义计时器->重新加载kS:,重新加载[2].kS”)
log(“自定义计时器->REBOJARR edId:,REBOJARR[2].ekrandetayId)
console.log(“自定义计时器->重新加载投标:”,重新加载[2].bodyId)
log(“自定义计时器->REOBJARR gTip:,REOBJARR[2].gostergeTip)}
重新加载[0]
应该可以工作。我们需要更多的代码来帮助您-具体来说,您如何创建数组以及如何将其传递给函数尝试在工作代码段中重现您的问题这是和@JJJ的组合,这就是为什么我使用if(i==detayBodyArray.length-1){customTimer();}
这没有任何区别,因为此时Ajax调用尚未完成。你必须等到所有的工作都完成,见例句。
for (var i = 0; i < detayBodyArray.length; i++) {
$.ajax({
type: "GET",
url: apiAdress + '/api/blabla/bla/ekrandetayId=' + detayId[i],
dataType: "json",
success: function (veri) {
n = detayId.indexOf(veri[2].ekrandetayId);
setRefObj = new refIndicator(detayId[veri[2].index], bodyId[n], tip[n], url[n], urlTipi[n], parseInt(veri[2].value), parseInt(veri[2].value));
refObjArr.push(setRefObj)
if (refObjArr.length === detayBodyArray.length - 1) {
customTimer()
}
},
error: function (msg) {
alert(msg.responseText);
},
beforeSend: function (xhr, settings) { xhr.setRequestHeader('Authorization', 'Bearer ' + token); }
});
}
function customTimer() {
console.log("custom Timer -> refObjArr : ", refObjArr[2])
console.log("custom Timer -> refObjArr kS : ", refObjArr[2].kS)
console.log("custom Timer -> refObjArr edId : ", refObjArr[2].ekrandetayId)
console.log("custom Timer -> refObjArr bId : ", refObjArr[2].bodyId)
console.log("custom Timer -> refObjArr gTip : ", refObjArr[2].gostergeTip)}