Javascritp en Mozilla...
tengo el siguiente Javascript que me he currado para rellenar un menú desplegable dependiendo de lo que se seleccione en otro menú... pero solo funciona en IE. :(
alguien sabe porque y que puedo hacer? :)
Gracias!!!
<code>
<script language="JavaScript">
<!-- Begin
var GRUPO = new Array();
var INDICES = new Array();
GRUPO[2] = 'nombre1, nombre2'
GRUPO[4] = 'nombre3, nombre4 nombre5, nombre6'
var INDICES = new Array();
INDICES[2] = '2, 2'
INDICES[4] = '4, 4, 4, 4'
function cambia (valor) {
form1.encargado.options.length = 0;
var cadena = GRUPO[valor];
var cadenaValores = INDICES[valor];
if (cadena != null){
var elementosCadena = cadena.split(', ');
var elementosCadenaValores = cadenaValores.split(', ');
for (var y=0;y<elementosCadena.length;y++){
var newopt = new Option (elementosCadena[y], elementosCadenaValores[y])
form1.encargado.options[y] = newopt;
}
}else {
alert ('No hay encargados relacionados');
form1.encargado.options.length = 0;
}
}
// End -->
</script>
</code>
black
muchas gracias Dirack!
apuntadas quedan tus sugerencias! :)
dirarck
porque los formularios son parte del objeto document. en realidad cuando haces un write() pones document.write(), porque write es un método de document, por esa misma razón los formularios que puedas tener se guardan en un array el cual es document.forms[] (que es una propiedad del objeto document), en tu caso puedes hacer referencia a tu formulario de dos maneras, supongamos que ese formulario es el primero que tienes en tu página, entonces para hacerle referencia puedes hacer lo siguiente: document.forms[0] o document.form1. Todo esto viene de la OOP, en realidad la sintaxis completa sería window.document.forms[0], como ves es muy extenso, y te aconsejo que si estas interesado te busques un buen manual de ecmascript, te leas la documentación de FM (tom trenka) o pilles el libro de flanagan que si el rey dice k es la bomba, pos debe serlo
black
cbp
joe, black, ya te vale, toa la tarde perdia por esa giliposhé :)
jejejeje!!!! acabo de leerlo! :)
y lo entretenido que te he tenido? jajaja!!!
por cierto, porque tengo que poner el document al pincipio para que funcione?
cbp
joe, black, ya te vale, toa la tarde perdia por esa giliposhé :)
black
GRACIAS POR LA AYUDA!! :D
black
ARREGLADOOOOOOOOOOOOOOOOOOO!!!! :D
tengo que poner
<code>
document.form1.encargado.options.length = 0;</code>
black
el javascript console de Mozilla (que nunca me acuerdo de usar) me da el siguiente error:
form1 is not definied en la linea:
<code>form1.encargado.options.length = 0;</code>
si lo cambio por
<code>this.encargado.options.length = 0;</code>
me dice
this.encargado has no properties...
cbp
ya, ya me he dau cuenta, si me tienes aquí liao con el código de los co****s, que no soy capaz de sacar por qué no va... :(
qué deslenguao me vuelvo cuando no me salen las cosas, hos***s :)
es que no lo hace porque no se dispara el evento de onChange, y así muy malamente... lo que no sé es porque no se dispara, con el onfocus tampoco va
black
meddle
<div class="quote">
black
<blockquote>lo sé! :) lo que pasa es que la entrega es el viernes... :)</blockquote>
</div>eso no es excusa. para empezar pierdes tiempo metiendo estilo (que deberas meterlo igualmente luego) y sobretodo, lo que te he dicho, pierdes tie,po porque la pagina lleva demasiado codigo inutil que no te deja ver los fallos ;)
Posi :(
GRASIAS...
no funciona lo que me has comentado cbp...
cbp
puta mierda, te da esto
"Error: uncaught exception: [Exception... "Not enough arguments [nsIDOMWindowInternal.alert]" nsresult: "0x80570001 (NS_ERROR_XPC_NOT_ENOUGH_ARGS)" location: "JS frame :: <unknown filename> :: onchange :: line 0" data: no]"
en el evento onchange del select :(
meddle
black
lo sé! :) lo que pasa es que la entrega es el viernes... :)
eso no es excusa. para empezar pierdes tiempo metiendo estilo (que deberas meterlo igualmente luego) y sobretodo, lo que te he dicho, pierdes tie,po porque la pagina lleva demasiado codigo inutil que no te deja ver los fallos ;)
black
meddle
vale, a ver, no te lo tomes mal, pero aceptame estas dos criticas
lo sé! :) lo que pasa es que la entrega es el viernes... :)
Pruebo lo tuyo CBP...
meddle
vale, a ver, no te lo tomes mal, pero aceptame estas dos criticas:
1.) cuando programes un formulario, una base de datos o un generador de particulas atomico, lo primero a tener en cuenta es no meter mas codigo del necesario para que funcione. Es decir, todas esas mierdas de tablas (que no es porque sean tablas, si fueran miles de capas te diria lo mismo) sobran y estorban para depurar el codigo. entorpecen la vista. quedate con el formulario solamente. ya tendras tiempo de hacerlo bonito.
2.) la segunda cosa es que te acostumbres a poner los valores de propiedades de elementos siempre entre comillas. height=20 deberia ser height="20" y value=Albacete deberia ser value="Albacete". con esto solo creo que podria funcionar, pero no he mirado el codigo, por razon expuesta en punto 1 ;)
black
este es el archivo...
www.creacionesdjc.net/pruebas/javascript.html
el tirador que cambia es el de encargado y depende del valor seleccionado en el tirador de constructora...
el name es "encargado", creo que si lo nombre... no?
GRACIAS!
cbp
no, no el name del option, al crearlo le pasas el text y el value, pero no el name, se lo tienes que añadir tú después
meddle
¿puedes colgar un ejemplo online? gracias.
black
el name del selector?
cbp
acabo de ver que lo que no te crea es el name, eso lo tienes que hacer tú después:
<code>var newopt = new Option (elementosCadena[y], elementosCadenaValores[y]);
form1.encargado.options[y] = newopt;
form1.encargado.options[y].name = "loquesea";
</code>
prueba a ver...
cbp
lo peor es que eso ya lo he hecho unas cuantas vences y funcionaba, pero ahora no lo encuentro... :(
black
cbp
¿sigues sin arreglarlo? ahora me voy a comer, a ver si luego puedo echarle un vistazo
Acabo de venir de comer... es por orgullo propio, por demostrar que mozilla también puede con ese javascritp! :)
El cliente va usarlo conIE, pero es por cabezonería! :D
cbp
¿sigues sin arreglarlo? ahora me voy a comer, a ver si luego puedo echarle un vistazo
black
cbp
tú lo que eres es un macarra y un jevi :P
VIVA AIRON MAIDEN!!!! :)
cbp
tú lo que eres es un macarra y un jevi :P
black
cbp
una pregunta, ¿por qué no haces esto en un sólo paso?
Porque soy un tío chulo! :D jejeje!!!
lo he cambiado pero nada, tampoco es de eso.... :)
cbp
cagu'en la, acabo de leer que hay que hacerlo cuando creas los option, vaya full de referencia :(
una pregunta, ¿por qué no haces esto en un sólo paso?
<code>var newopt = new Option (elementosCadena[y], elementosCadenaValores[y]);
form1.encargado.options[y] = newopt;</code>
asín que cualo
<code>form1.encargado.options[y] = new Option (elementosCadena[y], elementosCadenaValores[y]);</code>
no creo que tenga que ver, pero gano tiempo y parece que te estoy ayudando :)
black
Gracias pero no puedo, porque me recarga la página y entonces se me quedan con los valores inciales.... :)
seguimos intentándo... :D
cbp
prueba a poner history.go(0) después de crear el option
(proposición trapera mientras pienso algo mejor... ;))