Comunidad de diseño web y desarrollo en internet online

Diferencias de sintaxis entre navegadores.

Citar            
MensajeEscrito el 29 Dic 2009 01:04 am
Sea este código:

Código HTML :

<style type="text/css"> .imgmarco { display: none; } </style>
...
<div id="inmarco" class="inmarco">
    <div class="imgmarco" id="slide1">
        <img id="wrapimg" src="imagen1.jpg">
    </div>
    <div class="imgmarco" id="slide2">
        <img id="wrapimg" src="imagen2.jpg">
    </div>
</div>
<button onclick="Mostrar('slide1')">Mostrar</button>

Como verán hay un div que contiene otros div, pero los divs contenidos no son visibles.
Supongamos que, por cualquier medio que se ajuste, quisiera mostrar un div o el otro usando su id como referencia:

Código Javascript :

function Mostrar(id) {
   var d = document.getElementById(id);
   d.style = "display: block"; // atención a esta línea
}


Cargo la página en el Opera 10.10, perfecto.
Cargo la página en el IE 8 ... error...
Cargo la página en el FF 3.5.6 ... error...
Cargo la página en Chrome 3.0.195.38 ... error ...
Cargo la página en Safari 4.0.4 ... sí, adivinaron... error...
El error está en la línea comentada. ¿Por qué?.
Luego cambié la línea en cuestión usando esta sintaxis:

Código Javascript :

d.style.display = "block";

Y todo marchó bien en todos los navegadores, incluyendo el Opera.
Pero me tiene desconcertado. He buscado de arriba a abajo en la Web (mi principal referencia es w3schools.com) pero no encontré nada que diga que la forma d.style = "display: block"; esté mal, sin embargo al único que "le gusta" esta forma es a Opera... ¿Alguien podría decirme cuál es lo correcto según el estandar?.

Por supuesto, esto lo solucioné usando la segunda forma mostrada aquí.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 29 Dic 2009 12:18 pm
Una sugerencia, antes que nada no deben exisistir más de un ID con un nombre (eso pasa en el caso de wrapimg, más info).
No funcionó en la primera forma ya que no se debe cambiar los estilos de esa manera, sino de la segunda. más info. Saludos.

Por renesilva

37 de clabLevel



 

La Paz, Bolivia

firefox
Citar            
MensajeEscrito el 29 Dic 2009 01:22 pm
O sea que Opera es un forajido :D. Gracias por la respuesta y por notar la metida de pata con los id de los imgs.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 29 Dic 2009 09:36 pm
@DriverOp de nada, y en cuanto a forajidos cada browser tiene su forma de interpretar las cosas cuando les damos la oportunidad. Por ejemplo si colocamos elementos que no debieran estar dentro de otro elemento, y otros casos más :S

Por renesilva

37 de clabLevel



 

La Paz, Bolivia

mozilla

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.