Ir ao conteúdo
  • Cadastre-se

Javascript Variável do js esta com um valor undefined


Ir à solução Resolvido por Samuel.ms2112,

Posts recomendados

ola. Tudo bem?

Então com o seguinte, estou com um projeto pessoal, que verifica se um arquivo(img .png) existem em um determinado diretório, se existe ele deveria me retornar o link desse arquivo para que eu possa abir o mesmo, porém quando vou executar o comando ele me da que a variável esta undefined;

a variável de erro é a src; teoricamente o algorítimo deveria fazer o seguinte: ao apertar no botão ele automaticamente deve abrir um modal com uma imagem, no value do botão existe o nome da pasta referente a imagem. então no js eu pego esse value, e passo junto com a variável src(vazia) em uma função onde ela vai verificar se a pasta com as imagens existe, se sim, ela deveria salvar na variável src o link da primeira imagem, porém nao faz isso. já tentei com retorn também e não deu em nada

na imagem a baixo eu coloco um alart para me mostra qual o valor dela;

 image.thumb.png.efb88d2d296723385dd9f8f87604d7d8.png

 

 

segue o html/js referente somente ao erro;

 

<!DOCTYPE html>
<html>
<head>
 <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
<link href="css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
<!-- Botão para acionar modal -->
<button type="button" name="manual" value="WIFI" class="btn btn-primary" data-toggle="modal" onclick="iniciar(this.value);" data-target="#modalExemplo">
  Abrir modal de demonstração
</button>

<!-- Modal -->
<div class="modal fade" id="modalExemplo" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
  <div class="modal-dialog" role="document">
    <div class="modal-content">
      <div class="modal-header">
        <h5 class="modal-title" id="exampleModalLabel">Título do modal</h5>
        <button type="button" class="close" data-dismiss="modal" aria-label="Fechar">
          <span aria-hidden="true">&times;</span>
        </button>
      </div>
      <div class="modal-body">
        <img id="image" class="img-fluid">
        <input type="hidden" value="0" id="QManual">
        <input type="hidden" value="0" id="Qimg">
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-primary" onclick="anterior();"><<</button>        
        <button type="button" class="btn btn-primary" onclick="proxima();">>></button>
        <button type="button" class="btn btn-secondary" data-dismiss="modal">Fechar</button>
      </div>
    </div>
  </div>
</div>
    

 

function iniciar(manual) {
    var src;
    verificarI(manual, src);
    document.getElementById('image').src = src;
    alert(src);
    document.getElementById('QManual').value = manual;
    document.getElementById("Qimg").value = 1;
}

function verificarI(manual, src){
    var caminho = new Image();
	caminho.src = "img/"+manual+"/"+1+".png";
	caminho.onload = function() {
		src = "img/"+manual+"/"+1+".png";
	}
	caminho.onerror = function() {
		alert("Manual Não Localizado: "+manual+".");
	}
}

 

Link para o comentário
Compartilhar em outros sites

function iniciar(manual) {
    var src;
    verificarI(manual, src);
    document.getElementById('image').src = src;
    alert(src);
    document.getElementById('QManual').value = manual;
    document.getElementById("Qimg").value = 1;
}

Tem certeza? observe que você instanciou a variável src e imediatamente chamou a função verificarI(manual, src) com a variável vazia. Além disso, na terceira linha da função você atribuiu ao elemento 'image' o valor src, que está vazio e depois chama um alert() para exibir o src, que está vazio. Como quer que algo apareça?

Link para o comentário
Compartilhar em outros sites

@Luís Roberto C. da Silva agora se você olhar a outra função 

function verificarI(manual, src){
    var caminho = new Image();
	caminho.src = "img/"+manual+"/"+1+".png";
	caminho.onload = function() {
		src = "img/"+manual+"/"+1+".png";
	}
	caminho.onerror = function() {
		alert("Manual Não Localizado: "+manual+".");
	}
}

o valor que esta da variável src, teoricamente deveria esta mudando, pois la ela recebe o endereço : 

"img/"+manual+"/"+1+".png";

ou seja, não esta mais vazia;

pelo menos em outras linhagens de programação (como C por exemplo) isso é possível.

porém mesmo colocando um return na função e fazendo o src receber esse return a variável continua vazia 

Link para o comentário
Compartilhar em outros sites

@Samuel.ms2112 só que a variável src da função iniciar(manual) é diferente da variável src da função verificarI(manual, src). Só porque têm o mesmo nome não significa serem a mesma variável. Isso é programação básica. Para a variável receber um valor ele precisa está na mesma função, em outra função já não é a mesma variável.

adicionado 2 minutos depois

Em relação a linguagem C, isso só é possível utilizando ponteiros. Javascript não tem ponteiros.

adicionado 3 minutos depois

Pra colocar um return na segunda função terá que atribuir a variável a função, tipo:

var src = myFunction();

Link para o comentário
Compartilhar em outros sites

  • Solução

@Luís Roberto C. da Silva sim elas tem o mesmo nome, porém quando eu chamo a função verificarI(manual, src) eu passo dois parâmetros, o primeiro é o value que eu pego no  html, e o segundo a variável que eu quero que receba a alteração.

 

mas ok, vou criar essa variável de forma global, realmente eu estava pensando em ponteiros ao fazer isso.

adicionado 20 minutos depois

@Luís Roberto C. da Silva mesmo colocando o return nao funcionou entao acabei fazendo de outra forma 

function verificarI(manual){
    var caminho = new Image();
    var c;
	caminho.src = "img/"+manual+"/"+1+".png";
	caminho.onload = function() {
		document.getElementById('image').src = "img/"+manual+"/"+1+".png";
	}
	caminho.onerror = function() {
		alert("Manual Não Localizado: "+manual+".");
	}
    
}

onde eu tinha a variável src coloque o document.... agora esta funcionando 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!