Javascript 替换jQuery选定的单元格范围?

Javascript 替换jQuery选定的单元格范围?,javascript,jquery,html,Javascript,Jquery,Html,在下面的代码中,我们将其称为test.htm,在加载时,我得到一个表: 然后,如果我单击任何标题单元格,将运行一个脚本,使用jQuery选择器“#mytable>tbody>tr”在表行上迭代,然后它使用一个链式过滤器“td:gt(0):lt(2)”,来选择每行中的td单元格范围。因此,如果我们的列被索引为0,1,2,3,4,那么gt(0)将选择1,2,3,4,链接的lt(2)将被应用于0:1,1:2,2:3,3:4,因此只有0:1,1:2将保留,或者根据原始列索引,1,2被选中 对于这个选择

在下面的代码中,我们将其称为
test.htm
,在加载时,我得到一个表:

然后,如果我单击任何标题单元格,将运行一个脚本,使用jQuery选择器“
#mytable>tbody>tr
”在表行上迭代,然后它使用一个链式过滤器“
td:gt(0):lt(2)
”,来选择每行中的
td
单元格范围。因此,如果我们的列被索引为
0,1,2,3,4
,那么
gt(0)
将选择
1,2,3,4
,链接的
lt(2)
将被应用于0:
1
,1:
2
,2:
3
,3:
4
,因此只有0:
1
,1:
2
将保留,或者根据原始列索引,
1,2
被选中

对于这个选择,我想切换一个改变背景颜色的类,但我也想替换两个单元格的内容。所以我试着:

$( "td:gt(0):lt(2)", $thisRow ).toggleClass( "viol" );
$( "td:gt(0):lt(2)", $thisRow ).html("<td>AAAAA</td><td>BBBB</td>");

一种方法是将所需的值存储在
数组[]
上,然后根据数组的顺序将其设置为每个
td
元素。选中此项:

$('#mytable>tbody>tr')。每个(函数(){
var txt=['AAAA','BBBB'],
计数=0;
$thisRow=$(此);
$($td:gt(0):lt(2)”,$thisRow.toggleClass(“viol”);
$($td:gt(0):lt(2)”,$thisRow.each(function(){
$(this.html(txt[count]);
计数++
})
});
.a1{
边框样式:实心;
边框宽度:1px;
字号:1em;
高度:自动;
}
维奥先生{
背景色:#DCE0FF;
}

h行,单元格h1
h行,单元格h2
h行,h3单元
h行,单元格h4
h行,h5单元
第d1行,单元格d1-1
第d1行,单元格d1-2
第d1行,单元格d1-3
第d1行,单元格d1-4
第d1行,单元格d1-5
第d2行,单元格d2-1
第d2行,单元格d2-2
第d2行,单元格d2-3
第d2行,第d2-4单元
第d2行,单元格d2-5

您的主要困惑似乎是迭代jquery选择器中的每个项。您需要的是
每个

每个
都允许您以参数和索引的形式访问元素,让您完全控制要替换的内容和位置

$( "td:gt(0):lt(2)", $thisRow ).html("<td>AAAAA</td><td>BBBB</td>");

或者类似的事情。

我不明白你想做什么,你的问题是什么,你能说得更清楚一点,或者提供一个提琴吗?@Shlomi Haver-我想做的,我写道:“我单击任何标题单元格…”。。。。选择每行中的td小区范围。对于这个选择,我想切换一个改变背景颜色的类,但我也想替换两个单元格的内容"; 我的问题是内容没有被替换,而是插入到单元格中。还有一个完整的HTML文件,你可以将它复制/粘贴到文本文件中,称之为
test.htm
,然后在Firefox中打开它-如果你在同一个位置有jQuery(我现在将它改为在线),它会工作的。非常感谢@DaniP-我希望我可以在“一次”中完成替换(即,我让字符串覆盖选择),但显然这是不可能的-使用数组的方法看起来是下一个最好的方法。事实上,我不太明白,因为我有一个范围选择作为集合,所以我必须用
遍历每个元素。每个
;谢谢你的澄清!否则,我希望我可以指定一个范围集合,并用字符串替换它;事实证明这不太可能。
$( "td:gt(0):lt(2)", $thisRow ).each(function (index, element) {
    if (index % 2 === 0) {
        element.html('BBBB');
    }
    else {
        element.html('AAAAA');
    }
});