Ir para conteúdo

POWERED BY:

Arquivado

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

Gabriel123

[Resolvido] Meu JS n funfa no internet explorer

Recommended Posts

Boa tarde XD, eu faço um laço em php pra que seja mostrado na tela vários cronometros e o cronometro é feito em JS. No Mozila firefox e crome mostra beleza + no ie n mostra >.< . Vo colocar aqui só o JS mesmo pra vocês verem, vo colocar como se tivesse feito o laço e mostrado 2 cronometros.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title></title>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">

           <script>
		function RodaEventos(){
			window.onload = atualizaContador();
			window.onload = atualizaContador2();
		}
		</script>
</head>
<body onLoad="RodaEventos()">

<script type="text/javascript">
			var YY = 0;
			var MM = 0;
			var DD = 0;
			var HH = 0;
			var MI = 0;
			var SS = 0;
			 YY = 2011;
			 MM = 01;
			 DD = 10;
			 HH = 16;
			 MI = 00;
			 SS = 59;

			 var ss = 0;
			 var mm = 0;
			 var hh = 0;
			 var dd = 0;
			 var SS = 00;
			 var hoje = 0;
			 var futuro = 0;

			function atualizaContador() {

				hoje = new Date();
				futuro = new Date(YY,MM-1,DD,HH,MI,SS);

				ss = parseInt((futuro - hoje) / 1000);
				mm = parseInt(ss / 60);
				hh = parseInt(mm / 60);
				dd = parseInt(hh / 24);

				ss = ss - (mm * 60);
				mm = mm - (hh * 60);
				hh = hh - (dd * 24);

				var faltam = 0;
				faltam +=(dd && dd > 1) ? dd+' dias, ' : (dd==1 ? '1 dia, ' : '');
				faltam += (toString(hh).length) ? hh+':' : '';
				faltam += (toString(mm).length) ? mm+':' : '';
				faltam += ss;

				if (dd+hh+mm+ss > 0) {

					document.getElementById("dia").innerHTML = dd >= 0 ? dd : 0;
					document.getElementById("hora").innerHTML = hh >= 0 ? hh : 0;
					document.getElementById("min").innerHTML = mm >= 0 ? mm : 0;
					document.getElementById("seg").innerHTML = ss >= 0 ? ss : 0;
					setTimeout(function(){atualizaContador()},1000);
				} else {
					document.getElementById('saida').innerHTML = 'Chegou';
					setTimeout(function(){atualizaContador()},1000);
				}
			}
		</script>
           <script type="text/javascript">
			var YY2 = 0;
			var MM2 = 0;
			var DD2 = 0;
			var HH2 = 0;
			var MI2 = 0;
			var SS2 = 0;
			 YY2 = 2011;
			 MM2 = 01;
			 DD2 = 06;
			 HH2 = 12;
			 MI2 = 00;
			 SS2 = 59;

			 var ss2 = 0;
			 var mm2 = 0;
			 var hh2 = 0;
			 var dd2 = 0;
			 var SS2 = 00;
			 var hoje2 = 0;
			 var futuro2 = 0;

			function atualizaContador2() {

				hoje2 = new Date();
				futuro2 = new Date(YY2,MM2-1,DD2,HH2,MI2,SS2);

				ss2 = parseInt((futuro2 - hoje2) / 1000);
				mm2 = parseInt(ss2 / 60);
				hh2 = parseInt(mm2 / 60);
				dd2 = parseInt(hh2 / 24);

				ss2 = ss2 - (mm2 * 60);
				mm2 = mm2 - (hh2 * 60);
				hh2 = hh2 - (dd2 * 24);

				var faltam2 = 0;
				faltam2 +=(dd && dd > 1) ? dd+' dias, ' : (dd==1 ? '1 dia, ' : '');
				faltam2 += (toString(hh2).length) ? hh2+':' : '';
				faltam2 += (toString(mm2).length) ? mm2+':' : '';
				faltam2 += ss;

				if (dd+hh+mm+ss > 0) {

					document.getElementById("dia2").innerHTML = dd2 >= 0 ? dd2 : 0;
					document.getElementById("hora2").innerHTML = hh2 >= 0 ? hh2 : 0;
					document.getElementById("min2").innerHTML = mm2 >= 0 ? mm2 : 0;
					document.getElementById("seg2").innerHTML = ss2 >= 0 ? ss2 : 0;
					setTimeout(function(){atualizaContador2()},1000);
				} else {
					document.getElementById('saida').innerHTML = 'Chegou';
					setTimeout(function(){atualizaContador()},1000);
				}
			}
		</script>
				<table align="center" class="cronometro">
                           <tr>
                             <td align="center" class="img" rowspan="2">
                             </td>
                             <td colspan="6">TEMPO RESTANTE</td>
                           </tr>
                           <tr class="">
                           <td class="td_tempo"><span id="dia"></span> dias</td>
                             <td class="td_tempo"><span id="hora"></span> h</td><td>:</td>
                             <td class="td_tempo"><span id="min"></span> m</td><td >:</td>
                             <td class="td_tempo"><span id="seg"></span> s</td>
                           </tr>
                           <tr class="linha">
                             <td></td>
                           </tr>
                      </table>
                      <table align="center" class="cronometro">
                           <tr>
                             <td align="center" class="img" rowspan="2">
                             </td>
                             <td colspan="6">TEMPO RESTANTE</td>
                           </tr>
                           <tr class="">
                           <td class="td_tempo"><span id="dia2"></span> dias</td>
                             <td class="td_tempo"><span id="hora2"></span> h</td><td>:</td>
                             <td class="td_tempo"><span id="min2"></span> m</td><td >:</td>
                             <td class="td_tempo"><span id="seg2"></span> s</td>
                           </tr>
                           <tr class="linha">
                             <td></td>
                           </tr>
                      </table>
</body>

</html>

Pq n roda no internet explorer?? Quem puder ajudar fico grato XD.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sugestão: usar uma unica function com parâmetros:

 

<html>
<head>
<title></title>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<script type="text/javascript">
function atualizaContador( contador, YY, MM, DD, HH, MI, SS, futuro )
{
	hoje = new Date();
	futuro = new Date( YY, MM-1, DD, HH, MI, SS );

	var ss = parseInt((futuro - hoje) / 1000);
	var mm = parseInt(ss / 60);
	var hh = parseInt(mm / 60);
	var dd = parseInt(hh / 24);

	ss = ss - (mm * 60);
	mm = mm - (hh * 60);
	hh = hh - (dd * 24);

	var faltam2 = 0;
	faltam2 +=(dd && dd > 1) ? dd+' dias, ' : (dd==1 ? '1 dia, ' : '');
	faltam2 += (toString(hh).length) ? hh+':' : '';
	faltam2 += (toString(mm).length) ? mm+':' : '';
	faltam2 += ss;

	if (dd+hh+mm+ss > 0) 
	{			
		id( contador ).innerHTML = 
			'<td class="td_tempo">'+( dd >= 0 ? dd : 0 )+' dias, </td>'+
			'<td class="td_tempo">'+( hh >= 0 ? hh : 0 )+'h</td><td>:</td>'+
			'<td class="td_tempo">'+( mm >= 0 ? mm : 0 )+'m</td><td >:</td>'+
			'<td class="td_tempo">'+( ss >= 0 ? ss : 0 )+'s</td>';

		window.setTimeout( atualizaContador, 1000, contador, YY, MM, DD, HH, MI, SS, futuro );
	} 
	else 
	{
		id( contador ).innerHTML = '<td>Chegou</td>';
		//window.setTimeout( atualizaContador ,1000 );
	}
}
function id( el ){
	return document.getElementById( el );
}
window.onload = function()
{	
	atualizaContador( 'contador', '2011', '01', '10', '16', '00', '59' );
	atualizaContador( 'contador2', '2011', '01', '06', '12', '00', '59' );
	atualizaContador( 'contador3', '2011', '01', '04', '14', '04', '59' );
}
</script>
</head>
<body>     
<table align="center" class="cronometro">
	<tr>
		<td align="center" class="img" rowspan="2">
		</td>
		<td colspan="6">TEMPO RESTANTE</td>
	</tr>
	<tr id="contador">

	</tr>
</table>

<table align="center" class="cronometro">
	<tr>
		<td align="center" class="img" rowspan="2">
		</td>
		<td colspan="6">TEMPO RESTANTE</td>
	</tr>
	<tr id="contador2">

	</tr>
</table>

<table align="center" class="cronometro">
	<tr>
		<td align="center" class="img" rowspan="2">
		</td>
		<td colspan="6">TEMPO RESTANTE</td>
	</tr>
	<tr id="contador3">

	</tr>
</table>

</body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

funcionou corretamente no meu Firefox e Chrome, no teu não?

 

qnto ao IE, não vi ainda, mas acusa problema na linha do innerHTML, possível que você tenha que usar outra forma de jogar elementos no DOM, para que funcione corretamente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Descobri XD, nem acreditei quando vi q era só isso lol \o/,

<script>
                       function RodaEventos(){
                               window.onload = atualizaContador();
                               window.onload = atualizaContador2();
                       }
                       </script>

 

Não entendo muito de JS + n sei pq ele n funfa com 2 window.onload , teoricamente é pq fica repetindo a função como se tivesse startando e eu chamava ela na body <body onload="RodaEventos()"> (Alguém q entenda e puder explicar melhor XD), então o que eu fiz foi simples *.* tirei o window.onload que funfou XD. Vlw a ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não entendo muito de JS + n sei pq ele n funfa com 2 window.onload ,

porque o segundo 'sobrescreveu' o primeiro.

No código que postei não tem esse trecho, veja que mudei para:

 

        window.onload = function()
       {       
               atualizaContador( 'contador', '2011', '01', '10', '16', '00', '59' );
               atualizaContador( 'contador2', '2011', '01', '06', '12', '00', '59' );
               atualizaContador( 'contador3', '2011', '01', '04', '14', '04', '59' );
       }

assim você pode chamar qntas funções quiser dentro do window.onload

 

ainda assim, ficar repetindo o mesmo código indefinadas vezes, é ruim.

Pense bem, e use a forma com parâmetros.

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.