【问题标题】:how to print the value of variable in jquery for loop如何在jquery for循环中打印变量的值
【发布时间】:2011-03-17 09:09:50
【问题描述】:
$(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);
    }
  });
});

在上面的函数中,当我们单击超链接“显示”时,我们从“table1”获取行数。我想将“i”的值添加到表中,使其变为“table1”“table2 ""table3""table4""table5"。注释行给我错误

【问题讨论】:

  • 您可以发布您拥有的 HTML...以及您想要的结果吗?这将使问题/意图更加更清晰。
  • 我想将forloop中'i'的值追加到'table'
  • @Someone - 只是变量,或者您想将文本粘贴到表格中,例如创建元素?
  • @nick - 我想坚持价值
  • @nick 我想将变量 'i' 的值附加到表中。这样它就变成了 'table1', 'table2'

标签: jquery


【解决方案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);
    }
  });
});

上面的代码写得不对,因为

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

您的 table 元素中是否有任何由名称“rows”指定的属性(或指定)?你为什么要关心属性的长度?

2) 第二件事,当您使用this 时,请确保它要引用哪个元素。在您的代码中,

   $('#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');

上面的行(注释)是无效的,它应该是$(this).attr('myAttr');之类的东西,而且它指的是$('#show')(如果你要做一些事情,this应该指tr元素带有tr元素

3)

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

for 循环中,i 是一个计数器变量,而不是一个属性

4) 最后要好好利用 jQuery API , jQuery.com 是免费提供的 :)

编辑: 如果你想让我为你编码,我会做如下的事情

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

.each() 函数中,我们传递一个 Index 和一个 Element 作为参数,例如

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

默认情况下,Index 使用0 初始化,因此如果您想获得最终结果为 {table1,table2...},只需在将 Index 的值增加 1 后附加它即可

更多信息请参考jquery 网站.each()nick 所说。

【讨论】:

    【解决方案2】:

    我想你想在每一行或类似的东西中插入索引,例如

    $(document).ready(function(){
      $('#show').click(function(){
    
        $('#mytable').find("td").each(function(i,el){
    
          $(el).text($(el).text()+i)
    
        });
      });
    });​
    

    它适用于以下html

     <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>
    

    你可以在这里试试http://jsbin.com/apeto3

    【讨论】:

    • 当您点击show按钮超过一次时,您是否看到过代码的输出,我点击两次后得到的输出是“索引”附加到之前的文字。结帐!!!
    • @Samurai Jack,是的,这就是它的目的,展示了如何即时修改文本,因为我不太清楚 OP 想要什么
    【解决方案3】:

    我不确定整体意图,但它看起来像这样:

    $(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);
        }
      });
    });
    

    这会提醒“table1”、“table2”等....rows 的每个长度都有一个 i0 开始,因此您需要向其添加 1。如果您希望它基于&lt;tr&gt; 元素的数量而不是某些属性,则可以使用.each(),如下所示:

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

    【讨论】:

      猜你喜欢
      • 2016-12-23
      • 1970-01-01
      • 2020-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多