2010-03-15 4 views
1

Je compare deux tables chacune dans la première colonne. S'il y a une correspondance je copie le texte de la cellule adjacente de la première table à la deuxième table. Je suis capable de comparer les chaînes et d'obtenir la valeur, mais j'ai du mal à l'imprimer dans la deuxième table. Je reçois la valeur dans la variable "replaceText", mais comment l'imprimer dans la deuxième table ?? S'il vous plaît aider ... Exemple de code est la suivante ..Comparaison de 2 valeurs de colonne de tables et copie du contenu de la colonne suivante dans la seconde table

<script type="text/javascript"> 
    jQuery.noConflict(); 
    jQuery(document).ready(function(){ 

    jQuery('.itemname').each(function(){ 
    var itemName = jQuery(this).text(); 

     jQuery('.comparerow').each(function() { 
     var compareRow = jQuery(this).text(); 

      if (itemName == compareRow) { 
      var replaceText = jQuery(this).next('td').text(); 
      alert(replaceText); 
      } 

     }); 
    }); 
    }); 
</script> 

HTML est la suivante

<table width="100%"><thead> 
<tr> 
    <th align="left" >Name</th><th>Description</th></tr></thead> 
<tbody> 

<tr> 
    <td class="comparerow">IX0001</td> 
    <td class="desc">Desc 1 </td> 
</tr> 


<tr> 
    <td class="comparerow">IX0002</td> 
    <td class="desc" >Desc 2 </td> 
</tr> 

<tr> 
    <td class="comparerow">IX0003</td> 
    <td class="desc">Desc 3 </td> 
</tr> 
<tr> 
    <td class="comparerow">IX0004</td> 
    <td class="desc">Desc 4 </td> 
</tr> 
</tbody> 
</table> 

<br /> 

<table width="100%"> 
<tr> 
<th>Name</th><th>Description</th> 
</tr> 
<tr > 
<td class="itemname">IX0001</td><td></td> 
</tr> 
<tr> 
<td class="itemname">IX0002</td><td></td> 
</tr> 
<tr> 
<td class="itemname">IX0003</td><td></td> 
</tr> 
</table> 

Répondre

0

Vous pouvez simplifier l'ensemble en utilisant le :contains selector pour trouver votre match comme celui-ci:

jQuery.noConflict(); 
jQuery(document).ready(function() { 
    jQuery('.itemname').each(function() { 
    var itemName = jQuery(this).text(); 
    var match = jQuery('.comparerow:contains("' + itemName + '")'); 
    if(match.length) 
     jQuery(this).next('td').text(match.next('td').text()); 
    }); 
}); 

Ceci boucle chaque élément, recherche une correspondance. Si nous avons trouvé un match (.legnth est> 0), alors mettez le texte suivant pour le code <td> suivant.

+0

@Nick Merci pour la réponse .. Je reçois "Missing" "erreur dans le numéro de ligne 5 – Sullan

+0

@Sullan - Je ne vois pas cela, vérifiez tout code dans lequel il peut être enveloppé? Aussi, pouvez-vous voir quelle ligne de code réelle (parfois le nombre n'est pas précis)? –

+0

@Nick Craver Maintenant, cela fonctionne, mais le texte qui est en cours d'impression est "IX001" et non la valeur de la colonne suivante qui est "Desc 1" ... – Sullan

Questions connexes