Visibility

andrea
27 de Noviembre del 2003
Tengo un combo con links que sólo funciona en Explorer. Ahora estoy tratando de diferenciar este de otros browsers con el siguiente código:

-----------------------------------------------------
<script language=javascript>
<!--
function Mostrar(){
var browser;
browser = navigator.appName;
if (browser == "Microsoft Internet Explorer"){
window.bloque_exp.style.visibility = 'visible';
window.bloque_net.style.visibility = 'hidden'
}
else{
window.bloque_exp.style.visibility = 'hidden';
window.bloque_net.style.visibility = 'visible'
}
}
function Ir(){ //la llamo en el onchange del combo
if (document.frm.cbo.value != "")
document.location.href = frm.cbo.value
}
Mostrar()
//-->
</script>

<div id=bloque_exp style="visibility:hidden">
//muestro el combo
</div>

<div id=bloque_net class=txt_chico style="visibility:hidden">
//muestro una lista de links
</div>
-----------------------------------------------------

No sé cuál es el problema porque en Explorer me da este error:
'window.bloque_exp.style' es nulo o no es un objeto
Y en Netscape y Opera no me da ninguno pero tampoco me muestra los datos ya que tengo los dos bloques ocultos.

Probé sin el "window", con "document" pero nada.
No sé si tenga algo que ver que este código está incluido con SSI porque lo uso en varias páginas.
Bueno, espero me puedan dar una manito. Gracias desde ya.
Saludos

Andrea

scriptman
27 de Noviembre del 2003
Existen 2 formas mas usadas para referenciar un objeto:
1: document.NombreDeForm.Nombreobj.propiedad

propiedad puede ser style o value o etc. dependiendo el objeto

2: objID.propiedad

Actualmente segun las especificaciones oficiales la 2 es la recomendada.

Asegurate de ponerle un ID, y de preferencia que este fuera de algun FORM.

Ademas, Netscape 4.x usa "hide" y "show" en ves de "hidden" y "visible", q si usa a partir de su version 6.

Saludos, scriptman.

andrea
27 de Noviembre del 2003
Scriptman, primero gracias por responder.
Te cuento que no tengo ningún form en la página. Son simplemente dos bloques div, uno con un combo y otro con un listado de links, que muestro u oculto según sea el browser porque en Netscape no me toma el script para navegar desde el combo.
También te cuento que probé con hide y show en el else del if pero no hay caso. No me da error pero tampoco me muestra nada desde Netscape.
En Explorer ahora funciona bien porque llamé a la función en el onload de las páginas que incluyen este código.
En otro foro me dijeron que pruebe con:

document.getElementById('bloque_exp').style.visibility = 'hide';
document.getElementById('bloque_net').style.visibility = 'show'

pero sigo en la misma.

Si tenés alguna otra idea...