Programación Web y Scripting > JavaScript

 Select's Con Variables

<< < (2/2)

Slimer:
Hola Avalon:

El código en principio me sirve,,, pero se me ocurre el siguiente problema.

Imaginate: son 3 columnas (pongamos). La primera columna irá siempre lo mismo (que elijas el valor del 5 al 100%), pero la segunda, dependiendo de lo que hayas puesto en la primera,,, tomará un valor maximo u otro...

De momento, para una sola fila (me falta depurarlo un poco mas...) tengo el siguiente código:


--- Código: Text --- &#60;script language=&#34;JavaScript&#34;&#62; function tessto() {    var valor_por2 = new Array(); var porcentajes2 = new Array(); var k = 0; var valoracion = parseInt(document.formulario.select1[document.formulario.select1.selectedIndex].value); var restado = (100 - valoracion);  if ( valoracion != 100)   {    for (i=0; i&#60;numero; i++){      if (valor_por[i] &#60;= restado){          valor_por2[k] = valor_por[i]; //asignamos el valor           porcentajes2[k] = porcentajes[i]; //Asignamos el texto         k +=1;      }    }    var numero2 = porcentajes2.length;    document.formulario.select2.length = numero2;     for (k=0; k&#60;numero2; k++){      document.formulario.select2.options[k].value = valor_por2[k];          document.formulario.select2.options[k].text = porcentajes2[k];     }  }   if (valoracion == 100) {       numero2 = 1; var defval; var defpor = &#34;-&#34;; var j = 0;    document.formulario.select2.length = numero2;     document.formulario.select2.options[j].value = defval;      document.formulario.select2.options[j].text = defpor;      document.formulario.texto.value = valoracion;  }}&#60;/script&#62;  
Lo estoy ejecutando con la opcion


--- Código: Text ---   &#60;select name=&#34;select1&#34; onchange= &#34;tessto()&#34;&#62;   &#60;/select&#62;   
Repito,,, en la opcion 1,,, sin problemas,,, pero en la columna 2 que depende del valor que haya tomado su fila de la columna 1??? como digo en JavaScript que tome el valor de, por ejemplo el select15 en vez de el 14???

No se si me he explicado bien,,, si no terminas de captar el problema que me surge,,, pregunta y te mandaré capturas, etc...


Un saludo y gracias por tu atencion...

                           Slimer

Avalon:
Le puedes pasar ese valor a la función tessto()


--- Código: Text ---for (&#036;x = 1; &#036;x &#60;= 60; &#036;x++) {   echo &#34;&#60;select name='select1_'&#34;.&#036;x.&#34; onChange='tessto(&#34;.&#036;x.&#34;)'&#62;&#092;n&#34;;   echo &#34;&#60;/select&#62;&#092;n&#34;;   &#036;x++;} 


--- Código: Text ---&#60;script language=&#34;JavaScript&#34;&#62;   function tessto(num) {      ...      ...      ...   }&#60;/script&#62; 

Para acceder al select en concreto puedes hacerlo a través del array de elementos de un formulario y utilizando ese num para encontrar el select correspondiente (tendrás que hacer algunas operaciones)


--- Código: Text ---alert(document.formulario.elements[0].value) 
El índice 0 (elements[0]) se corresponderá con el primer select (fila 1 / columna 1)

Salu2,
Avalon

Slimer:
Hola:

Me ha surgido un problema.

He intentado implementar en el código lo que me has comentado... Si señor, tiene muy buena pinta, pero hay una cosa que no se hacer (y mis apuntes tampoco!):

Como puedo poner el valor de una variable dentro de un "comando"???

He probado poniendolo entre parentesis, corchetes, ... y no consigo que me tome el valor. Si asigno el valor a una variable, por ejemplo,,, perfecto, pero dentro de elementos.... no lo he conseguido.

Aqui te pongo un pequeño Script de test:


--- Código: Text --- &#60;script language=&#34;JavaScript&#34;&#62; function prueba(valu) {     alert (valu);   // me da resultado 1.... OK valoracion = parseInt(document.formulario.select(valu)[document.formulario.select(valu).selectedIndex].value);  alert (valoracion);  // no me dice nada ....  FALLO }&#60;/script&#62;   
--- Código: Text ---   &#60;form name=&#34;formulario&#34;&#62;  &#60;select name=&#34;select1&#34; onchange= &#34;prueba(1)&#34;&#62;  &#60;/select&#62;  

Como siempre,,, Muy agradecido de antemano!!!!   :P

Avalon:
Eso no es posible, por eso te decía que utilizaras el array de elementos del formulario document.formulario.elements


De todas formas otro método que podrías utilizar es pasarle a la función tessto el objeto select en cuestión, sería así


--- Código: Text ---&#60;select name=&#34;select1&#34; onChange=&#34;tessto(this)&#34;&#62; 


--- Código: Text ---function tessto(miSelect) {   alert(miSelect.name);} 

Aquí podrías utilizar miSelect.name para saber que select es el que se ha cambiado y miSelect.value para ver que valor se ha seleccionado.


La ventaja de hacerlo de la primera forma es que con algunas operaciones podrías saber exactamente que select, de que fila y de que columna se ha seleccionado, mientras que de esta segunda forma tendrás que hacerlo a partir del nombre del select miSelect.name


Salu2,
Avalon

Slimer:
Hola:

Muchas gracias por la ayuda.... ahora voy a ver si puedo juntarlo todo,,, que la verdad no se por donde cogerlo!!!!!  :blink:

Muchas gracias por la información,,,, ya os contaré como me va el asunto....

un saludo


                Slimer

Navegación

[0] Índice de Mensajes

[*] Página Anterior

Ir a la versión completa