2011-05-16 4 views
1

Dans la table ci-dessous qui est générée dynamiquement, je veux traverser et trouver des contrôles html (input, select, textarea) en utilisant JavaScript DOM. Je ne veux pas de valeurs span et div. Est-ce que quelqu'un peut donner une idée sur la façon de traverser?trouver des entrées en HTML en utilisant JavaScript

<html> 
    <head>Html</head> 
     <body> 
      <tr> 
        <td> 
        <div id="one"></div> 
        </td> 
        <td> 
         <input type="text" name="textbox" id="txtid" value=10"/> 
        </td> 
        <td> 
         <select id="cuskstatus" name="cuskstatus" class="selectStyleBorder"> 
           <option selected value="LOCAL">Local</option> 
           <option value="GLOBAL">Global</option> 
         </select> 
        </td> 
       </tr> 
       <tr> 
        <td> 
         <textarea id="tareaid" name="" value="10"/> 
        </td> 
        <td> 
         <span id="span1">value</span> 
        </td> 
       </tr> 
      </body> 
    </html> 
+0

Si l'ordre des éléments n'est pas important, vous pouvez utiliser 'document.getElementByTagName'. – sitifensys

+0

Pouvez-vous utiliser jQuery ou êtes-vous limité au JavaScript simple? – drudge

+0

@jnpcl javascript beaucoup mieux mais jquery ok pas de problème –

Répondre

0

L'application jQuery rend ce problème trivial:

$('input','select','textarea') 

Cela renverra une collection jQuery de toutes les entrées, éléments select et textarea.

+1

Ce n'est pas une bonne solution d'inclure toute la bibliothèque juste pour collecter quelques éléments sur la page :) – Teneff

+0

Le bien est subjectif. D'un point de vue pragmatique, faire les choses rapidement avec les bons outils, c'est une excellente solution. –

+2

L'utilisation de jQuery est très utile si vous utilisez déjà jQuery dans votre projet. Y compris jQuery juste pour faire ceci est comme la chasse aux lapins avec des armes nucléaires. –

4

je le ferais comme ça

var desired_tag_names = new Array('select', 'input', 'textarea'); 

function getElements(e) { 
    var elements = new Array(); 
    for (i=0; i<e.length; i++) { 
     var el = document.getElementsByTagName(e[i]); 
     for (j=0; j<el.length; j++) { 
     elements.push(el[j]); 
     } 
    } 
    return elements; 
} 

var all_the_desired_elements = getElements(desired_tag_names); 
+0

@teneff merci, mais l'exigence est si nous prenons une rangée, nous devons obtenir tous les contrôles html et puis passer à la ligne suivante ... laissez-moi savoir si vous avez des doutes ... –

+0

@BALA vérifier l'édition – Teneff

+0

@teneff s'il vous plaît expliquer ces getElements (document.getElementById ('row199'), desired_tag_names); je suis nouveau à js ... –

1

En JavaScript plaine, il suffit d'utiliser form.elements.

En supposant que vous avez un <form id="formid">:

var inputs = document.getElementById("formid").elements; 
// ... 

Ou si vous voulez parcourir toutes les formes du document sur une base par formulaire, il suffit d'utiliser document.forms pour obtenir toutes les formes d'abord.

for (var i = 0; i < document.forms.length; i++) { 
    var form = document.forms[i]; 
    var inputs = form.elements; 
    // ... 
} 

Si vous utilisez déjà jQuery, ou ouvert, utilisez :input sélecteur.

var $inputs = $(':input'); 
// ... 
Questions connexes