Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Micilini Roll

Javascript nao da alert? porque?

Recommended Posts

pessoal pq este alert nao esta sendo apresentado na tela?

 

<script>
var width = screen.width; // pega a lagura do computador inteiro - resoluçao de tela
var height = screen.height; // pega a altura do computador inteiro - resoluçao de tela

var w = window.innerWidth;// pega a largura da area ta tela do navegador - area trabalhavel
var h = window.innerHeight;// pega a largura da area ta tela do navegador - area trabalhavel

var div_w = document.getElementById("exemplar_b").width;// pega largura da div exemplar_b
var div_h = document.getElementById("exemplar_b").height;// pega largura da div exemplar_b

var calculo_w = (w - div_w) / 2;
alert(calculo_w);
</script>

 

se eu mudar o alert pra ele me mostrar uma frase como OI ESTOU AQUI,ele funciona ate o comando

 

var h = window.innerHeight;// pega a largura da area ta tela do navegador - area trabalhavel

 

 

agora abaixo dos comando das varieveis

 

var div_w = document.getElementById("exemplar_b").width;// pega largura da div exemplar_b
var div_h = document.getElementById("exemplar_b").height;// pega largura da div exemplar_b

 

 

 

ele nao retorna mais nada! porque?

Compartilhar este post


Link para o post
Compartilhar em outros sites

aperte Ctrl+Shift+J no Firefox e veja no console de erros o motivo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

bruno teste ele me retornou valor nulo como este:

 

 

 

document.getelementbyid(..) is null

 

 

ai ta resolvi colocar este comando todo dentro de uma function e coloquei a function pra funcionar,dai o comando funciounou direito!,mas no caso sera que da pra fazer isso sem function?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já que você está manipulando elementos da página, a melhor maneira é esta:


<script type="text/javascript">

window.onload = function() {

var width = screen.width; // pega a lagura do computador inteiro - resoluçao de tela

var height = screen.height; // pega a altura do computador inteiro - resoluçao de tela

 

var w = window.innerWidth;// pega a largura da area ta tela do navegador - area trabalhavel

var h = window.innerHeight;// pega a largura da area ta tela do navegador - area trabalhavel

 

var div_w = document.getElementById("exemplar_b").width;// pega largura da div exemplar_b

var div_h = document.getElementById("exemplar_b").height;// pega largura da div exemplar_b

 

var calculo_w = (w - div_w) / 2;

alert(calculo_w);

}

</script>

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema de não estar funcionando antes imagino eu é que você não havia atribuído que aquelas instruções fossem executadas quando a página fosse carregada.

 

Se você fez mais ou menos como o Henrique postou vai ver que não foi simplesmente "colocar numa function" e sim definir que quando a página fosse carregada algo seria executado, sendo esse "algo" a dita função.

Compartilhar este post


Link para o post
Compartilhar em outros sites

entendi,eu ja tinha pensado nesse window.load() so que a questão é:

 

1- no meu site no caso existem 2 window.load(), pra if else nao sei se isso pode acarretar problema...

 

2-este comando:

 

var calculo_w = (w - div_w) / 2;

 

 

calcula o quanto de margin left tenho que dar pra div ficar no centro da pagina em relaçao a largura e a altura,agora vamos supor que o usuario tenha alterado isso mesmo depois do site ter carregado! se ele mudar a largura do navegador sera que o um novo calculo sera realizado?

Compartilhar este post


Link para o post
Compartilhar em outros sites

ai vc teria q recalcular no evento window.onresize

 

só que vc está fazendo da forma errada conceitualmente. Faça com css, simples assim: margin: 0 auto;

Compartilhar este post


Link para o post
Compartilhar em outros sites

entendi bruno eu sei da existencia deste comando,no caso so irei fazer da altura mesmo,o margin0 auto; deixa no centro da pagina em relaçao a largura mas com relação a altura nao aconteçe nada!



olha pessoal odeio fazer isso,pois mesmo eu que sou iniciante - basico em javascript sei que é errado...mas olha como o meu ficou:

 

<script>
window.onresize = function(){
	var width = screen.width; // pega a lagura do computador inteiro - resoluçao de tela
var height = screen.height; // pega a altura do computador inteiro - resoluçao de tela
var w = window.innerWidth;// pega a largura da area ta tela do navegador - area trabalhavel
var h = window.innerHeight;// pega a largura da area ta tela do navegador - area trabalhavel
var divw = document.getElementById("exemplar_b").offsetWidth;// pega largura da div exemplar_b
var divh = document.getElementById("exemplar_b").offsetHeight;// pega largura da div exemplar_b
var calculo1 = (w - divw)/2; 
var calculo2 = (h - divh)/2;
document.getElementById("exemplar_b").style.marginLeft = calculo1+"px";
document.getElementById("exemplar_b").style.marginTop = calculo2+"px";	
}
window.onload = function() {
var width = screen.width; // pega a lagura do computador inteiro - resoluçao de tela
var height = screen.height; // pega a altura do computador inteiro - resoluçao de tela
var w = window.innerWidth;// pega a largura da area ta tela do navegador - area trabalhavel
var h = window.innerHeight;// pega a largura da area ta tela do navegador - area trabalhavel
var divw = document.getElementById("exemplar_b").offsetWidth;// pega largura da div exemplar_b
var divh = document.getElementById("exemplar_b").offsetHeight;// pega largura da div exemplar_b
var calculo1 = (w - divw)/2; 
var calculo2 = (h - divh)/2;
document.getElementById("exemplar_b").style.marginLeft = calculo1+"px";
document.getElementById("exemplar_b").style.marginTop = calculo2+"px";
}
</script>

 

 

tive que fazer o load e o rezise o certo era so existir um comando que realizasse isso tudo mas... :(

Compartilhar este post


Link para o post
Compartilhar em outros sites

tá duplicado, não está?

 

então isole em uma função e chame ela duas vezes.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ok vamos la!

 

 

 

tá duplicado, não está?

 

sim, esta duplicado!

 

 

 

então isole em uma função e chame ela duas vezes.

 

ok vamos lá:

 

 

 

então isole em uma função

 

 

	
function get(){
var width = screen.width; // pega a lagura do computador inteiro - resoluçao de tela
var height = screen.height; // pega a altura do computador inteiro - resoluçao de tela
var w = window.innerWidth;// pega a largura da area ta tela do navegador - area trabalhavel
var h = window.innerHeight;// pega a largura da area ta tela do navegador - area trabalhavel
var divw = document.getElementById("exemplar_b").offsetWidth;// pega largura da div exemplar_b
var divh = document.getElementById("exemplar_b").offsetHeight;// pega largura da div exemplar_b
var calculo1 = (w - divw)/2; 
var calculo2 = (h - divh)/2;
document.getElementById("exemplar_b").style.marginLeft = calculo1+"px";
document.getElementById("exemplar_b").style.marginTop = calculo2+"px";

}

 

 

ok isolei em somente 1 função:

 

 

 

chame ela duas vezes

 

 

perae vamos ver se eu entendi.. entao no caso terei que fazer isso?

 

window.onresize = function (){
setTimeout(get(),1000)
};

window.onload = function (){
setTimeout(get(),1000)
};

 

 

 

 

seria isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

quase.

window.onresize = function (){
    get();
};

window.onload = function (){
    get();
};
de onde vc inventou o setTimout() ? não falei nada disso. Não precisava.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pergunta, pergunta! Precisa invocar a função dentro de outra função?

Compartilhar este post


Link para o post
Compartilhar em outros sites

não, não precisa, poderia fazer:

window.onresize = get;
mas ai caso ele quisesse chamar mais rotinas, iria ter q criar a function anônima de fora...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.