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.