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
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