0

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

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

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

但是我将第一条消息保存了两次,确实得到了第二条 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(你们将如何处理这个?

4

4 回答 4

2

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

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

http://jsfiddle.net/YfpZL/

于 2013-10-02T21:07:55.540 回答
2

试试这个,而不是使用 jQuery .each()

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

演示在这里

于 2013-10-02T21:08:32.213 回答
1

你只需要正确的索引

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);
    }
};
于 2013-10-02T21:22:55.737 回答
1

你总是得到相同的文本,因为你在获取 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]);
}
于 2013-10-02T21:11:52.120 回答