jQuery / Javascript使用for循环

时间:2016-07-29 09:29:45

标签: javascript jquery

我正在使用Bootstrap在单击树视图中的链接时创建选项卡。在单击时打开的每个选项卡中,还有两个名为Query Builder和Dimension Builder的选项卡。下面是使用jQuery创建的标记(只是其中的一部分):

<div class="tab-pane active" id="1" role"tabpanel">
    <ul class="nav nav-tabs query-dimension-tabs" role="tablist">
        <li role="presentation" class="active">
            <a role="tab" data-toggle="tab" href="#tab0" aria-controls="tab0">Query Builder</a>
        </li>
        <li role="presentation">
            <a role="tab" data-toggle="tab" href="#tab1" aria-controls="tab1">Dimension Builder</a>
        </li>
    </ul>
    <div class="tab-content"></div>
</div>
<div class="tab-pane" id="2" role"tabpanel">
    <ul class="nav nav-tabs query-dimension-tabs" role="tablist">
        <li role="presentation" class="active">
            <a role="tab" data-toggle="tab" href="#tab1" aria-controls="tab1">Query Builder</a>
        </li>
        <li role="presentation">
            <a role="tab" data-toggle="tab" href="#tab2" aria-controls="tab2">Dimension Builder</a>
        </li>
    </ul>
    <div class="tab-content"></div>
</div>

为了能够在这些选项卡中拥有我的表单,一个用于查询生成器,一个用于维度生成器,并使每个表单在每个选项卡窗格中的每个选项卡中保持唯一,所有这些<a>标签都需要要拥有唯一的href和aria-controls属性,那么最后的数字必须是唯一的。因此,第一个<a>标记需要为数字0,下一个数字为1,2,3,4 ......等等。

我正在使用for循环遍历所有存在的<ul>,并且我正在尝试为每个<a>中的两个<ul>标记设置数字。以下是for循环:

    var contentUl = firstContentDiv.find(".query-dimension-tabs");      

    for (var i = 0; i < contentUl.length; i++) {      
        var qId = i;
        var dId = i + 1;        

        qA.href = "#tab" + qId;
        qA.setAttribute("aria-controls", "tab" + qId);
        dA.href = "#tab" + dId;
        dA.setAttribute("aria-controls", "tab" + dId);
    }

我尝试了很多不同的计算,但我总是以0 1 1 2 2 3结束,但是我希望它有0 1 2 3 4 5 ....有多少标签有这两个标签是

这有可能通过一些计算吗?

以下是点击两个链接时标签的照片:

enter image description here

2 个答案:

答案 0 :(得分:2)

这对你有用。

var qId = 0;
$(".query-dimension-tabs a").each(function(){
    $(this).attr("href","#tab"+qId);
    $(this).attr("aria-controls","tab"+qId);
    ++qId;
});

答案 1 :(得分:0)

您真正需要做的是,不需要将for循环中变量 i 的值增加一个,而是需要将其递增2

所以不是这个

for (var i = 0; i < contentUl.length; i++)

这样做

for (var i = 0; i < contentUl.length; i+=2)

这样,每次你的循环开始, qId 将得到值得到i的值(0,2,4,6等)和 dId wil得到大于i的值1(1,3,5,7等)。因此,您将获得qId,dId对的值为0 1,2,3,4等等。

所以你的最终for循环将如下所示:

for (var i = 0; i < contentUl.length; i+= 2) {      
    var qId = i;
    var dId = i + 1;        

    qA.href = "#tab" + qId;
    qA.setAttribute("aria-controls", "tab" + qId);
    dA.href = "#tab" + dId;
    dA.setAttribute("aria-controls", "tab" + dId);
}

此外,如果您需要使用相同的类或ID 更改所有元素的值,则必须使用 each()函数而不是 for loop 并使用 $(this).attr()更改polamoros所声明的值。