Javascript radio gama de entrada?

  • HornyShauny
  • Newbie
  • Newbie
  • No Avatar
  • Registrado: May 13, 2005
  • Mensajes: 12
  • Loc: Exeter, Devo, England
  • Status: Offline

Nota Mayo 14th, 2005, 1:21 pm

Hola chicos, tengo lo que creo que es una pregunta simple, pero simplemente no funciona. tomar el siguiente código HTML

Código: [ Select ]
<tr id='basic' bgcolor='#FFFFFF'><td>
<input type="radio" id="opt_tye" name="opt_tye" onclick="seton('basic',0);">
</td></tr>
<tr id='ote' bgcolor='#FFFFFF'><td>
<input type="radio" id="opt_tye" name="opt_tye" onclick="seton('ote',1);">
</td></tr>
<tr id='hourly' bgcolor='#FFFFFF'><td>
<input type="radio" id="opt_tye" name="opt_tye" onclick="seton('hourly',2);">
</td></tr>
  1. <tr id='basic' bgcolor='#FFFFFF'><td>
  2. <input type="radio" id="opt_tye" name="opt_tye" onclick="seton('basic',0);">
  3. </td></tr>
  4. <tr id='ote' bgcolor='#FFFFFF'><td>
  5. <input type="radio" id="opt_tye" name="opt_tye" onclick="seton('ote',1);">
  6. </td></tr>
  7. <tr id='hourly' bgcolor='#FFFFFF'><td>
  8. <input type="radio" id="opt_tye" name="opt_tye" onclick="seton('hourly',2);">
  9. </td></tr>


y el funtion javascript

Código: [ Select ]
function seton(row,opt){
  srcf = document.getElementById('opt_tye');

  srcf[0].checked = false;
  srcf[1].checked = false;
  srcf[2].checked = false;

  document.getElementById(row).bgcolor = '#EEEEEE';
  srcf[opt].checked = true;
}
  1. function seton(row,opt){
  2.   srcf = document.getElementById('opt_tye');
  3.   srcf[0].checked = false;
  4.   srcf[1].checked = false;
  5.   srcf[2].checked = false;
  6.   document.getElementById(row).bgcolor = '#EEEEEE';
  7.   srcf[opt].checked = true;
  8. }


y el error

Código: [ Select ]
srcf.0 has not properties


¿Alguien tiene ideas que yo tenía la impresión de que, como un campo de seleccionar el campo de la radio con el mismo nombre se convertiría en una matriz [] Pero Im en un perdido en esta .. También me sabe tan bien como usted que podría hacer
Código: [ Select ]
document.forms[0].opt_tye[0]
pero que también podría pasar una hora escribir un corrector navegador para ver si necesito
Código: [ Select ]
document.all
primero.

Así que las ideas matrices de entrada en la radio y la getElementById;

PS Por favor, no sólo depurar el código de arriba como ya he escrito a mano en esta ventana de la memoria.
  • Anonymous
  • Bot
  • No Avatar
  • Registrado: 25 Feb 2008
  • Mensajes: ?
  • Loc: Ozzuland
  • Status: Online

Nota Mayo 14th, 2005, 1:21 pm

  • RichB
  • Guru
  • Guru
  • Avatar de Usuario
  • Registrado: May 17, 2003
  • Mensajes: 1121
  • Loc: Boston
  • Status: Offline

Nota Mayo 14th, 2005, 1:50 pm

getElementById va a devolver una referencia a un elemento individual, no a la matriz de que el navegador crea cuando le das un grupo de elementos del mismo nombre. También identificadores deben ser únicos a diferencia de los nombres. No es necesario para probar la documento. todo para acceder a las colecciones de las formas, así que no creo que usted tiene un problema de recuperación de una referencia a la matriz de esta manera:

Código: [ Select ]
srcf = document.forms[0].elements["opt_tye"];


/ / Edit

Estaba pensando en esto un poco más y Im no seguro de que tendría que tener acceso a la matriz para hacer lo que usted desea si usted pasó esto como un argumento a la función en lugar de un entero:
Código: [ Select ]
<input type="radio" name="opt_tye" onclick="seton('basic', this);">


Código: [ Select ]
function seton(row, opt){
  document.getElementById(row).bgColor = '#EEEEEE';
  opt.checked = true;
}
  1. function seton(row, opt){
  2.   document.getElementById(row).bgColor = '#EEEEEE';
  3.   opt.checked = true;
  4. }

Cuando probé esto y establecer el valor de una radio el botón programáticamente los navegadores (IE 6, FF1.0.4 y Opera 8) ajusta automáticamente el resto de botones en el grupo en false.

Estaba tratando de pensar en una manera de obtener la matriz del grupo de radio con métodos DOM si eso lo que usted realmente quería hacer. No creo que la matriz es parte de la DOM (Id estar feliz de ser corregido si soy malo), así que lo mejor que podía llegar a fue hacer una función que tendría un NodeList de todos los elementos de entrada y compruebe que para su nombre atributos para crear y devolver una matriz del grupo en cuestión:

Código: [ Select ]
function getRadioArray(groupName) {
  var retval = new Array();
  var nodeList = document.getElementsByTagName("input");
  for(var i = 0; i < nodeList.length; i++) {
    if(nodeList.item(i).name == groupName) retval[i] = nodeList.item(i);
  }
  return retval;
}
  1. function getRadioArray(groupName) {
  2.   var retval = new Array();
  3.   var nodeList = document.getElementsByTagName("input");
  4.   for(var i = 0; i < nodeList.length; i++) {
  5.     if(nodeList.item(i).name == groupName) retval[i] = nodeList.item(i);
  6.   }
  7.   return retval;
  8. }


entonces usted podría llamarlo con:

Código: [ Select ]
var srcf = getRadioArray("opt_tye");


o

Código: [ Select ]
var srcf = getRadioArray(opt.name);


si se pasa esto OPT parámetro

Im seguro su justo un error tipográfico, pero no se olvide de utilizar para camelCase. "BgColor
Free Programming Resources
  • hinnerup
  • Born
  • Born
  • No Avatar
  • Registrado: Ago 11, 2009
  • Mensajes: 1
  • Status: Offline

Nota Agosto 11th, 2009, 3:59 am

El método RichB indica, daría lugar a un número indefinido de entradas en la matriz devuelta.

La raíz de la modificación sólo debe devolver los objetos.

getRadioArray: function (groupname) (
radioArray var = new Array ();
var nodeList = document.getElementsByTagName ( "input");
for (var i = 0; i <nodeList.length; i + +) (
if (nodeList.item (i). groupname == nombre) (
radioArray [radioArray.length] = nodeList. punto (i);
)
)
radioArray retorno;
)

Publicar Información

  • Total de mensajes en este tema: 3 mensajes
  • Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 198 invitados
  • No puede abrir nuevos temas en este Foro
  • No puede responder a temas en este Foro
  • No puede editar sus mensajes en este Foro
  • No puede borrar sus mensajes en este Foro
  • No puede enviar adjuntos en este Foro
 
 

© 2011 Unmelted, LLC. Ozzu® es una marca registrada de Unmelted, LLC