Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Ola estou montando uma pagina com JS puro porem estou encontrando um erro que não sei como resolver.
Esse e o HTML:
<html>
<head>
<title>Map generator</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="js/setup.js"></script>
</head>
<body onload="bodyReady()">
</body>
</html>
Setup.js:
var obj = new Object();
obj.nImgReady = 1; //numero de imagens carregadas
var imgObj = [];
function bodyReady(){
console.log ( 'Body foi criado ');
window.obj.background = document.createElement("canvas");
window.obj.body = document.querySelector("body");
window.obj.virtual = document.createElement("canvas");
for(a=0;a<img.length;a++){
imgObj[a] = document.createElement("img");
imgObj[a].setAttribute("id", "img"+String(a));
imgObj[a].src = img[a][2];
imgObj[a].setAttribute("onLoad", "imgReady()");
}
}
function imgReady(){
obj.nImgReady++;
if(img.length<=obj.nImgReady){
pageReady();
}
}
function pageReady(){
alert("deu certo");
}
A função "bodyReady()" e chamada pelo "onLoad" do "Body" quando o mesmo e carregado, ela acessa e entende a variavel global "obj.nImgReady", porem quando eu chamo a função "imgReady()" pelo "onLoad" da imagem, quando ela e carregada, a variavel global "obj.nImgReady" aparece como "undefined", quando a função "bodyReady()" era execultada automaticamente sem ser uma função a variavel global "obj.nImgReady" era reconhecida como inteiro pela função "imgReady()".
Não posso criar essa variavel na função pois trata-se de um contagem por isso preciso que seja de um elemento externo, todas as funções que são chamadas apartir da função "imgReady()", não reconhecem a variavel "obj.nImgReady", porem reconhecem normalmente "img.length" e o objeto "obj".
Não posso criar a varivel local na função "bodyReady()" pois o "onload" da imagem não reconheceria, tambem não posso passar por parametro externo da função "(obj)" pois a contagem e assincrona e a variavel armazenada seria copiariam valores errado não ocorrendo acontagem correta por isso optei por uma variavel global.
O codigo acima não esta completo dei uma enchugada, mais o resto não interfere em nada e apenas complemento os elementos ali criados, e definição da lista de imagens por array.
O codigo funcionava normal antes de virar um função porem preciso que funcina como função.
Carregando comentários...