Javascript Input Radio Array?

  • HornyShauny
  • Newbie
  • Newbie
  • No Avatar
  • Inscription: Mai 13, 2005
  • Messages: 12
  • Loc: Exeter, Devo, England
  • Status: Offline

Message Mai 14th, 2005, 1:21 pm

Salut les gars, j'ai ce que je pense que c'est une question simple, mais elle ne fonctionne tout simplement pas. prendre le code HTML suivant

Code: [ 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>


et le funtion javascript

Code: [ 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. }


et l'erreur

Code: [ Select ]
srcf.0 has not properties


Est-ce que quelqu'un a des idées que j'étais sous l'impression que comme un champ Sélectionnez le domaine radio avec le même nom deviendrait un array [], mais im à un perdu à ce .. one Aussi je sais aussi bien que vous n'avez que je pouvais faire
Code: [ Select ]
document.forms[0].opt_tye[0]
mais alors je pourrais aussi bien passer une heure à écrire un correcteur navigateur pour voir si j'ai besoin
Code: [ Select ]
document.all
premier.

Donc toutes les idées sur les tableaux d'entrée de radio et de getElementById;

PS S'il vous plaît ne pas déboguer simplement le code ci-dessus comme je viens de l'écrit à la main dans cette fenêtre de la mémoire.
  • Anonymous
  • Bot
  • No Avatar
  • Inscription: 25 Feb 2008
  • Messages: ?
  • Loc: Ozzuland
  • Status: Online

Message Mai 14th, 2005, 1:21 pm

  • RichB
  • Guru
  • Guru
  • Avatar de l’utilisateur
  • Inscription: Mai 17, 2003
  • Messages: 1121
  • Loc: Boston
  • Status: Offline

Message Mai 14th, 2005, 1:50 pm

getElementById va retourner une référence à un élément individuel, et non au tableau que le navigateur crée lorsque tu donnes un groupe d'éléments du même nom. Aussi ids doivent être uniques à la différence des noms. Vous n'avez pas besoin de test pour document. tous d'accéder aux collections des formulaires, donc je ne crois pas que vous avez un problème de récupération d'une référence au tableau comme ceci:

Code: [ Select ]
srcf = document.forms[0].elements["opt_tye"];


/ / Modifier

Je pensais à ça un peu plus et Im pas sûre que tu aurais besoin d'accéder au tableau pour faire ce que vous voulez si vous avez passé cet comme argument à la fonction au lieu d'un entier:
Code: [ Select ]
<input type="radio" name="opt_tye" onclick="seton('basic', this);">


Code: [ 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. }

Lorsque j'ai testé et a fixé la valeur d'une radio bouton par programme les navigateurs (IE 6, FF1.0.4 et Opera 8) règle automatiquement les autres boutons dans le groupe à false.

J'essayais de penser à un moyen d'obtenir le tableau groupe de radio avec des méthodes DOM si c'est ce que tu voulais vraiment faire. Je ne pense pas que ce tableau fait partie du DOM (Id heureux d'être corrigé si mal Im), donc le mieux que j'ai pu trouver des consistait à faire une fonction qui auraient obtenu un NodeList de tous les éléments de saisie, puis vérifiez-les pour leur nom attributs de construire et de retourner un tableau du groupe en question:

Code: [ 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. }


alors vous pourriez l'appeler avec:

Code: [ Select ]
var srcf = getRadioArray("opt_tye");


ou

Code: [ Select ]
var srcf = getRadioArray(opt.name);


si tu passais cet OPT paramètre

Im sure its just a typo, mais n'oubliez pas d'utiliser CamelCase pour. BgColor
Free Programming Resources
  • hinnerup
  • Born
  • Born
  • No Avatar
  • Inscription: Aoû 11, 2009
  • Messages: 1
  • Status: Offline

Message Août 11th, 2009, 3:59 am

La méthode RichB l'indique, serait de créer un nombre inconnu de indéfini des entrées dans le tableau retourné.

La modification suivante doit retourner uniquement les objets.

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 == nom) (
radioArray [radioArray.length] = nodeList. point (i);
)
)
retour radioArray;
)

Afficher de l'information

  • Total des messages de ce sujet: 3 messages
  • Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 139 invités
  • Vous ne pouvez pas poster de nouveaux sujets
  • Vous ne pouvez pas répondre aux sujets
  • Vous ne pouvez pas éditer vos messages
  • Vous ne pouvez pas supprimer vos messages
  • Vous ne pouvez pas joindre des fichiers
 
 

© 2011 Unmelted, LLC. Ozzu® est une marque déposée de Unmelted, LLC