Quantcast
Channel: Últimos conteúdos
Viewing all articles
Browse latest Browse all 14190

Problemas com acesso a variavel global

$
0
0

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.


Viewing all articles
Browse latest Browse all 14190