我正在努力解决js中的一段代码。
我有一张桌子,我想迭代它并为前两个tr做一些事情,而不是第三个和第四个等。为了使它更清洁,我会在这里写一个列表。
假设我想为每两个元素提供一个类。 像这样:
<li></li> <!-- class1-->
<li></li> <!-- class1-->
<li></li> <!-- class2-->
<li></li> <!-- class2-->
<li></li> <!-- class3-->
<li></li> <!-- class3-->
<li></li> <!-- class4-->
<li></li> <!-- class4-->
etc ..
我在考虑for循环,但我无法弄清楚如何定位每一个。此外,我发现'切片'但似乎你可以选择两个其他项目之间的项目。 我想创建一个while循环来改变切片中start和end的值,但是想不到这样做的好方法。
这有什么用吗?
答案 0 :(得分:1)
您可以循环index
元素并使用%
和余数运算符nth
来获取每个let c = 1;
$("li").each(function(i) {
$(this).attr('class', 'class' + c).text(c)
if ((i - 1) % 2 == 0) c++;
})
元素并执行某些操作。
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
Dim wr As HttpWebRequest = CType(WebRequest.Create("http://www1.caixa.gov.br/loterias/_arquivos/loterias/D_lotfac.zip"), HttpWebRequest)
wr.KeepAlive = True
wr.AllowAutoRedirect = True
wr.ServicePoint.Expect100Continue = False
wr.CookieContainer = New CookieContainer
wr.AutomaticDecompression = DecompressionMethods.GZip
wr.Headers.Add("Accept-Encoding: Deflate, gzip")
Dim ws As HttpWebResponse = CType(wr.GetResponse(), HttpWebResponse)
Dim str As Stream = ws.GetResponseStream()
Dim inBuf(ws.ContentLength) As Byte
Dim bytesToRead As Integer = CInt(inBuf.Length)
Dim bytesRead As Integer = 0
While bytesToRead > 0
Dim n As Integer = str.Read(inBuf, bytesRead, bytesToRead)
If n = 0 Then
Exit While
End If
bytesRead += n
bytesToRead -= n
End While
Dim fstr As New FileStream("x:\temp\D_lotfac.zip", FileMode.OpenOrCreate, FileAccess.Write)
fstr.Write(inBuf, 0, bytesRead)
str.Close()
fstr.Close()
答案 1 :(得分:0)
不确定你到底在做什么,但也许像这样的循环可以提供帮助。
for(let i=0; i<list.length; i+=2){
doSomething(list[i], getSpecialParam(i/2));
doSomething(list[i+1], getSpecialParam(i/2));
}
当使运行更大时,您可能想要嵌套循环
for(let i=0; i<list.length; i+=runLength){
for(let j=0; j<runLength; j+=1){
doSomething(list[i+j], getSpecialParam(i/runLength));
}
}
const list = $('li');
const letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
const runLength = 2;
for(let i=0; i<list.length; i+=runLength){
for(let j=0; j<runLength; j++){
list[i+j].textContent = letters[(i/runLength)%letters.length];
}
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<ul>
答案 2 :(得分:0)
如果您想要基于配置的元素分解,请使用length = 2或您想要的任何内容。您将获得具有所需长度的子数组
var items=$("li"),index=1,length=2;
while(items.length) {
$(items.splice(0,length)).each(function() {
$(this).addClass('class'+index).text('class'+index);
});
index+=1;
};
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
答案 3 :(得分:0)
您可以使用jQuery迭代它们来向table
tr
元素添加类:
var i = 1;
var sumupi = 0;
jQuery("table tr").each(function(){
jQuery(this).addClass('class-' + i);
if (sumupi == 1) {
i++;
sumupi = 0;
}
else {
sumupi = 1;
}
});