Ver Mensaje Individual
  #4 (permalink)  
Antiguo 21/01/2009, 02:05
quimfv
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Error de compatibiliadad o programación?

Cita:
¿Cuál es la diferencia entre

(document.getElementById('file')[document.getElementById('file').selectedIndex].value)
y


file[file.selectedIndex].value

??
Asi salvando la identificacion de file (no se como te funciona directamente sin el document.getElem...) serian equivalentes, si la pregunta es

¿Cuál es la diferencia entre

(document.getElementById('file')[document.getElementById('file').selectedIndex].value)=="default"
y


file=="default"

??

Luego...

Código:
document.getElementById('file')[X].value
Un select es un array por tanto hay que ponerle el indice que quieres para obtener un valor,

Código HTML:
<select name="file" id="file" size="1">
      <option value="default" selected>A</option>
      <option value="01">B</option>
</select> 
en este caso un array con dos valores, pero puedes obtener lo siguiente

Indice::::Value:::::Text
:::0::::::::::default:::::::::A
:::1::::::::::01:::::::::::::::::B

el indice seleccionado que es el que nos interesa lo obtienes de

Código:
document.getElementById('file').selectedIndex
Si se ha selecionado "A" tendiramos que

document.getElementById('file').selectedIndex
es igual a 0

document.getElementById('file')[document.getElementById('file').selectedIndex].value
es igual a document.getElementById('file')[0].value
es igual a "default"

document.getElementById('file')[document.getElementById('file').selectedIndex].text
es igual a document.getElementById('file')[0].text
es igual a "A"



La diferencia importante es que tu tenias

Cita:
file == 'default'
al ser file un array no puede ser igual a un valor.

La funcion se podria simplificar así

Código HTML:
<script>
function loadTutorialFile(month) { 

     //asignacion de objetos del documento a variables
      var Ifrm = document.getElementById('tutorialfile');
      var objfile=document.getElementById('file');

      //condicional para elegir el src del iframe
      Ifrm.src = (objfile[objfile.selectedIndex].value == 'default') ? 'dash2008.php' :  'dash2009'; 
}
</script> 
He quitado el condicional en la asignacion de "Ifrm" puesto que supongo que siempre estara en el documento que llame a esta función, pero si quieres se puede usar. En realidad se usa para evitar un mensaje de error si se llama a esta función des de un documento que no contiene el objeto buscado, pero para que vas a llamar esta funcion si ya sabes que no puede funcionar....

El cambio de "file" a "objfile" no es necesario puesto que una cosa es la variable javascript y otra el objeto del formulario pero yo prefiro no repetir nombres por claridad, de hecho en "Ifrm" tambien lo hacemos puesto que podriamos usar "tutorialfile".


Quim

Última edición por quimfv; 21/01/2009 a las 02:35