【问题标题】:In this for loop, how to capture both messages instead of just first one? (jQuery)在这个 for 循环中,如何捕获两条消息而不仅仅是第一个? (jQuery)
【发布时间】:2013-10-02 21:04:08
【问题描述】:

所以我正在努力完成以下工作

  • 使用 manager-msg 类遍历所有 td
  • 将每个文本中的文本保存到变量/数组中
  • 进行拆分并创建新文本
  • 替换每个 manager-msg td 的文本

目前我被困在第一部分,我可以在我的示例CodePen here 中循环两次。

但是我将第一条消息保存了两次,但确实获得了第二条 td 中的文本。

HTML

<table cellpadding="10" border="1">
<tr>
    <td>Name</td>
    <td>Wants to Meet</td>
    <td >Message</td>
</tr>
<tr>
    <td>Ann</td>
    <td>Cal</td>
    <td class="manager-msg">Hi I'd love to meet Cal</td>
</tr>
<tr>
    <td>Bob</td>
    <td>Joe</td>
    <td class="manager-msg">Hi I'd like to meet Joe</td>
</tr>
</table>

jQuery

var home_inbox_br_fix = function() {
    var num_manager_msg = $('.manager-msg').length;
    var test = [];

    for (var i = 0, num_manager_msg; i < num_manager_msg; i++) {
        test[i] = $('.manager-msg').html();
        alert('Message '+(i+1));
        alert(test);
  console.log(test);
    }
};

/*
var home_inbox_br_fix = function() {
    var test = [];
    $(".manager-msg").each(function(i){
        test.push($('.manager-msg').html());
        alert(this.id + " is the " + i + "th div with this class");
    });
    console.log(test);
};
*/

home_inbox_br_fix();

现在有代码隧道X(你们会如何处理这个?

【问题讨论】:

标签: jquery loops for-loop each


【解决方案1】:

改用 jQuery .each() 试试这个

var home_inbox_br_fix = function() {
    var test = [];
    $('.manager-msg').each(function(i){
        test[i] = this.innerHTML;
  alert(test[i]);
    });
};

演示here

【讨论】:

  • @Leon,当其他人查看我的代码时,有时这对我也很好 :)
  • 是的 :) 就像说出来一样,突破了这个瓶颈,现在进入了一些多维数组
【解决方案2】:

我会使用.map() 来获取值。

var messages = $('.manager-msg').map(function() {
    return $(this).text();
}).get();

http://jsfiddle.net/YfpZL/

【讨论】:

  • 谢谢!我忘了thisme = '需要更多睡眠'
【解决方案3】:

您总是得到相同的文本,因为在获取 HTML 时没有使用当前索引。如果您像这样循环,它将起作用(尽管还有其他方法,如其他答案所示):

for (var i = 0, num_manager_msg; i < num_manager_msg; i++) {
    test[i] = $('.manager-msg').eq(i).html();
    // You were missing this! -----^
    alert('Message '+(i+1));
    alert(test[i]);
    console.log(test[i]);
}

【讨论】:

    【解决方案4】:

    你只需要正确的索引

    var home_inbox_br_fix = function() {
        var num_manager_msg = $('.manager-msg').length;
        var test = [];
    
        for (var i = 0, num_manager_msg; i < num_manager_msg; i++) {
            test[i] = ($($('.manager-msg')[i]).html());
            alert('Message '+(i+1));
            alert(test);
            console.log(test);
        }
    };
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-18
      • 2013-09-16
      • 2020-10-22
      • 2021-06-08
      • 2015-01-20
      • 1970-01-01
      • 2014-01-24
      • 1970-01-01
      相关资源
      最近更新 更多