2011-03-18 5 views
0

J'ai un tag div comme suit:Comment obtenir le nom d'identifiant du nœud?

<div id="DataEntryForm" style="position:absolute; left:100px;top:175px;width:350px; z-index:2;background-color:yellow; visibility:hidden;border-top-color: black;"> 
    <table id="DataEntryFormTable" style=" width:100%" style="margin-top: -50px;"> 
     <tr><td>&nbsp;Build Name</td><td> <input type="text" id="BuildName" name="BuildName" value="" /></td></tr> 
     <tr><td>&nbsp;Build Description</td><td> <input type="text" id="BuildDesc" name="BuildDesc" value="" /></td></tr> 
     <tr><td>&nbsp;Software Details</td><td> <input type="text" id="SoftwareDetail" name="SoftwareDetail" value="" /> </td></tr> 
     <tr><td>&nbsp;Hardware Details</td><td> <input type="text" id="HardwareDetail" name="HardwareDetail" value="" /> </td></tr><br> 
     <tr><td>&nbsp;</td></tr> 
     <tr> 
      <td> 
       <input type="button" value="Save" onclick="saveRecord()" /></td> 
      <td> <input type="button" value="Cancel" onclick="cancelOperation()"/></td> 
     </tr> 
     <br> 
    </table> 
</div> 

Je veux charger les valeurs de la base de données au texte du type d'entrée. Donc, j'ai besoin d'obtenir l'identifiant de chaque noeud afin de correspondre à ma valeur json et à l'identifiant de noeud et de lui attribuer la valeur. J'essaie avec ce qui suit pour y parvenir. Mais, je ne peux pas obtenir la valeur d'identification. N'importe qui, aidez-moi s'il vous plaît. Merci ..

var nodes = deform.childNodes; 
index =0; 

// Load the first record in the collection. 
// It is expected to have only one object in JS Object collection 
var dbRecord= dbRecords[0]; 

while (index < nodes.length) 
{ 
    if(nodes[index].type=="text") 
    { 
     nodes[index].value = dbRecord[nodes[index].id]; 
    } 

    index++; 
} 
+0

pouvez-vous nous montrer un exemple vivant ou au moins le contenu de 'dbRecord'? – bluefoot

+0

Ceci est le dbRecord Content-- [{"HardwareDetail": "[B", "BuildDesc": "Testing1", "BuildID": "BL002", "BuildName": "Deuxième nom", "SoftwareDetail": "ss "}] – Nila

+0

Vous pouvez utiliser une boucle for à la place. Ou dites 'while (index ++ Kayla

Répondre

1

id est la propriété correcte. le problème est que vous ne récupérez pas les noeuds que vous essayez de récupérer de votre table. L'utilisation de .children() ou .childNodes(), n'obtient que des enfants directs de votre élément, vous devez donc descendre plus loin dans votre table pour accéder aux entrées de texte que vous essayez de remplir. Sinon, si vous voulez utiliser jQuery, un seul sélecteur pourrait faire l'affaire:

$("#DataEntryFormTable input[type='text']")

Si vous n'utilisez pas jQuery, je voudrais utiliser .children() récursive pour trouver les éléments que vous recherchez pour.

modifier: Aussi, assurez-vous d'inclure entre parenthèses lorsque vous appelez une fonction, si var nodes = deform.childNodes; serait var nodes = deform.childNodes();

modifier à nouveau: ... Je ne vois pas les données que vous avez fournies. Puisque vous avez les identifiants dont vous avez besoin dans vos données JSON, vous pouvez rechercher les éléments directement en utilisant ces identifiants. Essayez ceci:

dbRecord= [{"HardwareDetail":"[B","BuildDesc":"Testing1","BuildID":"BL002","BuildName":"Se­cond Name","SoftwareDetail":"ss"}]; 
record = dbRecord[0]; 
for (attr in record){ 
    el = document.getElementById(attr); 
    if (el) 
     document.getElementById(attr).value = record[attr]; 
    else 
     console.debug('no HTML element with ID ' + attr); 
} 

Je ne pense pas console.debug fonctionne dans certains navigateurs (IE?), De sorte que vous aurez envie de prendre cette partie lorsque vous testez terminé.

+0

Cette boucle est infinie. Je ne peux pas exécuter ce code. Comment casser cette boucle. Pourquoi c'est infini? – Nila

+0

il ne devrait pas être infini, mais votre dbRecord contient un objet dans un tableau, et j'ai écrit mon code comme si le tableau n'était pas là, ou comme si les données que vous avez publiées étaient dbRecords, pas dbRecord. Vous devrez peut-être accéder au premier élément du tableau avant de parcourir les attributs. Je vais mettre à jour le code pour clarifier. – undefined

+0

Ok. Merci. Maintenant j'ai compris. La raison en est que la boucle d'index des nœuds est toujours là. C'est pourquoi la boucle est devenue infinie. Maintenant ça marche. – Nila