Foros del Web » Programando para Internet » Javascript »

que problema tengo?

Estas en el tema de que problema tengo? en el foro de Javascript en Foros del Web. <html> <head> <script language="JavaScript" type="text/javascript" > function plataforma(){ if(document.plataforma.value=='otro'); alert("hola"); } </script> <head> <body> <select name="plataforma" onchange="javascript :plataforma()"> <option value="ps2-pc-rdvd">option1</option> <option value="video">option2</option> <option value="otro">option3</option> </select>...
  #1 (permalink)  
Antiguo 14/10/2005, 02:36
 
Fecha de Ingreso: noviembre-2003
Mensajes: 20
Antigüedad: 20 años, 5 meses
Puntos: 0
que problema tengo?

<html>
<head>
<script language="JavaScript" type="text/javascript" >
function plataforma(){

if(document.plataforma.value=='otro');
alert("hola");
}
</script>
<head>
<body>
<select name="plataforma" onchange="javascript:plataforma()">
<option value="ps2-pc-rdvd">option1</option>
<option value="video">option2</option>
<option value="otro">option3</option>
</select>
  #2 (permalink)  
Antiguo 14/10/2005, 03:04
 
Fecha de Ingreso: octubre-2004
Ubicación: España
Mensajes: 894
Antigüedad: 19 años, 6 meses
Puntos: 3
Probablemente es
document.plataforma
te falta hacer referencia al formulario (que no existe)
Código HTML:
<html>
<head>
<script type="text/javascript" >
function plataforma(){
if(document.forms.formuA.plataforma.value=='otro');
alert("hola");
}
</script>
<head>
<body>
<form name="formuA">
<select name="plataforma" onchange="javascript:plataforma()">
<option value="ps2-pc-rdvd">option1</option>
<option value="video">option2</option>
<option value="otro">option3</option>
</select>
</form></body></html> 
O, si no, hazlo con getElementById:
Código HTML:
<html>
<head>
<script type="text/javascript" >
function plataforma(){
if(document.getElementById("plataforma").value=='otro');
alert("hola");
}
</script>
<head>
<body>
<select id="plataforma" onchange="javascript:plataforma()">
<option value="ps2-pc-rdvd">option1</option>
<option value="video">option2</option>
<option value="otro">option3</option>
</select>
</body></html> 
__________________
Angel :cool:
  #3 (permalink)  
Antiguo 14/10/2005, 03:29
Avatar de ludovico2000  
Fecha de Ingreso: noviembre-2003
Ubicación: Bizkaia
Mensajes: 1.315
Antigüedad: 20 años, 6 meses
Puntos: 2
Lo siento angsanchez, pero no estoy de acuerdo del todo: mira este código que sí que funciona: (y no declara form ni nada)

El error estaba en la estructura:
if(cosa=='valor'){
{consecuencias si es que sí;}
else //esto se puede omitir para que no haga nada si es que no
{consecuencias si es que no;} //esto se puede omitir para que no haga nada si es que no
}

Si no pones los corchetes que marco en rojo, ejecutará el alert en todos los casos, ya que lo considera como otra orden que ejecuta tras comprobar la condición if, no "en caso de...". De hecho, en tu primer código no sale ningún alert, y en el segundo, sale aunque selecciones la opción 1, la opción 2 ó la opción 3.

Código:
<html>
<head>
<script language="JavaScript" type="text/javascript" >
function plataforma(){

if(platforma.value=='otro'){
alert("hola");}
}
</script>
<head>
<body>
<select name="platforma" onchange="javascript:plataforma()">
<option value="ps2-pc-rdvd">option1</option>
<option value="video">option2</option>
<option value="otro">option3</option>
</select>
</body>
</html>
CURIOSÍSIMO: si el select se llama "plataforma" no funciona (por eso le he puesto "platforma")

¿¿¿¿¿¿Alguien sabe por qué??????
  #4 (permalink)  
Antiguo 14/10/2005, 12:30
 
Fecha de Ingreso: octubre-2004
Ubicación: España
Mensajes: 894
Antigüedad: 19 años, 6 meses
Puntos: 3
1) En efecto, el if estaba mal escrito (creo que culpa del punto y coma al final); debe funcionar con las llaves que has añadido, que es la forma más correcta, o así:
if(platforma.value=='otro') alert("hola");
que es como lo escribe mucha gente; no sé si el salto de línea lo estropea.

2) Insisto en que la referencia if(platforma.value no es correcta, no estás identificando el objeto select correctamente. Quizás funcione, pero puede depender del navegador o de cualquier otra cosa. ¿Has probado en otros navegadores? En efecto, FORM ya no es imprescindible en los navegadores nuevos, pero por todo lo que he leído, debes identificar el objeto como perteneciente a un formulario o bien como elemento del documento.

3) Si el problema era la coincidencia de nombres "plataforma", es evidentemente una confusión de JS generada por tener un objeto y una función con nombres idénticos. Y quizás por la forma de referir al objeto: al leer
function plataforma(){
if(plataforma.value
está probablemente buscando la propiedad "value" de la propia función.
Por eso al poner nombres distintos desaparece el problema.
__________________
Angel :cool:
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:19.