2010-07-17 5 views
1
$(document).ready(function(){ 
    $('#show').click(function(){ 
    var totrows= $('#table').attr('rows').length; 
    for(i=0; i < totrows; i++){ 
     //var rowid = $('#table').$(this).attr('i'); 
     alert(rowid); 
    } 
    }); 
}); 

Dans la fonction ci-dessus lorsque l'on clique sur lien « Show » nous obtenons le nombre de lignes de la « table1 » .Je souhaite ajouter la valeur de ' je suis à la table pour qu'il devienne "table1" "table2" "table3" "table4" "table5" .La ligne commentée me donne l'erreurcomment imprimer la valeur de la variable dans jquery boucle

+1

Pouvez-vous poster le code HTML que vous avez ... et ce que vous voulez que le résultat soit? Cela rendrait la question/l'intention * beaucoup * plus claire. –

+0

Je veux ajouter la valeur de 'i' dans le forloop à la 'table' – Someone

+0

@Someone - Juste la variable, ou vous voulez coller du texte dans la table, par ex. créer des éléments? –

Répondre

0

Je ne suis pas sûr de l'intention générale, mais il semblerait comme ceci:

$(document).ready(function(){ 
    $('#show').click(function(){ 
    var totrows= $('#table').attr('rows').length; 
    for(i=0; i < totrows; i++){ 
     var rowid = 'table' + (i+1); 
     alert(rowid); 
    } 
    }); 
}); 

cette alerterait "table1", "table2", etc ... un pour chaque longueur de .rowsi commence à 0 et vous devez y ajouter 1. Si vous le souhaitez en fonction du nombre d'éléments <tr> au lieu d'un attribut, vous pouvez utiliser .each(), comme ceci:

$(function(){ //short for $(document).ready(function() { 
    $('#show').click(function(){ 
    $('#table tr').each(function(i) { 
     var rowid = 'table' + (i+1); 
     alert(rowid); 
    }); 
    }); 
}); 
1

suivant est votre code réel qui est bogué, je vais essayer d'expliquer toutes les chances de votre programme, ce qui peut vous aider dans le futur codage

$(document).ready(function(){ 
    $('#show').click(function(){ 
    var totrows= $('#table').attr('rows').length; 
    for(i=0; i < totrows; i++){ 
     //var rowid = $('#table').$(this).attr('i'); 
     alert(rowid); 
    } 
    }); 
}); 

(s'il vous plaît nu avec moi, vous !! Merci) Le code ci-dessus n'est pas écrit dans le bon sens, parce que

) var totrows= $('#table').attr('rows').length;

est-il un attribut (ou spécifié) par le nom « lignes » dans votre tableau élément ?? et pourquoi vous préoccupez-vous de la longueur d'un attribut?

) deuxième chose, lorsque vous utilisez this assurez-vous quel élément il va se référer.Dans votre code,

$('#show').click(function(){ 
     var totrows= $('#table').attr('rows').length; 
     for(i=0; i < totrows; i++){ 
      //var rowid = $('#table').$(this).attr('i'); 
      alert(rowid); 
     } 
    }); 

     
//var rowid = $('#table').$(this).attr('i'); 

La ligne ci-dessus (a commenté) est non valide, il devrait être quelque chose comme $(this).attr('myAttr'); et d'ailleurs il fait référence à $('#show') (this devrait se référer à des éléments tr si vous allez faire des choses avec tr éléments

3)

for(i=0; i < totrows; i++){ 
     //var rowid = $('#table').$(this).attr('i'); 
     alert(rowid); 
    } 

Dans le pour boucle i est une variable de compteur et pas un attribut

) La dernière chose que faire un bon usage de jQuery API, jQuery.com fournit gratuitement :)

modifier: si vous voulez que je code pour vous, je ferais quelque chose comme suit

$(document).ready(function() { 
    $('#show').click(function() { 
     $('#table tr').each(function(i) { 
     alert('table' + (i+1)); 
     }); 
    }); 
}); 

En fonction .each() nous passons un Index et un élément en tant que paramètres comme

$(selector).each(function(Index,Element){ //do some thing });

Par défaut, le Index est initialisé avec 0, donc si vous voulez obtenir votre résultat final {table1,table2...} il suffit d'ajouter la valeur de Index après l'avoir incrémentée par 1

pour plus d'informations se référer à jquery site Web pour .each() comme nick dit.

0

Je pense que vous voulez insérer un index dans chaque ligne ou quelque chose comme ça, par exemple.

$(document).ready(function(){ 
    $('#show').click(function(){ 

    $('#mytable').find("td").each(function(i,el){ 

     $(el).text($(el).text()+i) 

    }); 
    }); 
});​ 

Il fonctionne sur html suivant

<input type="button" id="show" value="Show"> 

<table id="mytable"> 
    <tr><td>row</td></tr> 
    <tr><td>row</td></tr> 
    <tr><td>row</td></tr> 
    <tr><td>row</td></tr> 
</table> 

Vous pouvez essayer ici http://jsbin.com/apeto3

+0

Avez-vous vu la sortie de votre code lorsque vous cliquez sur le bouton 'show' plus de ** une fois **, la sortie que j'ai eu après avoir cliqué deux fois est le' Index 'est ajouté au texte précédent. check-out !!! –

+0

@Samurai Jack, oui c'est ce qu'il a été fait pour faire, démontrant comment le texte peut être modifié à la volée, car je ne suis pas tout à fait clair ce que veut OP –

Questions connexes