使用for循环变量更改html类的名称

时间:2014-12-02 08:15:59

标签: javascript jquery html html5

我有几个html类在类名中递增,例如:

<div class="chicken1">
    <b></b>
</div>
<div class="chicken2">
    <b></b>
</div>
<div class="chicken3">
    <b></b>
</div>

我正在尝试编写一个for循环,循环遍历这些类名,将索引添加到每个类名的末尾,然后以2s延迟调用函数。

for ( var i = 1; i <= 3; i++ ) {
    setTimeout(function() {
        myFunction(".chicken" + i + " b");
    }, 2000 * i);
}

然而这不起作用。

Fiddle

3 个答案:

答案 0 :(得分:1)

问题实际上是在循环内调用setTimeout()的问题;要正确地执行此操作,您必须关闭循环变量:

for (var i = 1; i <= 6; ++i) {
    setTimeout((function(i) {
        return function() {
            myFunction(".chicken" + i + " i");
        };
    })(i), i * 2000);
}

Demo

它使用一个立即被调用的函数,传递i的值; <{1}}被触发后,此值将保留。

答案 1 :(得分:0)

你正在使用jquery吗?尝试

for ( var i = 1; i <= 3; i++ ) {
    myFunction($(".chicken" + i + " b"));
}

在jquery中,要选择元素,类等,我们需要$("<selector here>");

答案 2 :(得分:0)

这对我来说很好用:

<html>
<head>
<script src="http://code.jquery.com/jquery-2.1.1.min.js"></script>
</head>
<body>

<div class="chicken1">
    <b></b>
</div>
<div class="chicken2">
    <b></b>
</div>
<div class="chicken3">
    <b></b>
</div>


<script>
    $( document ).ready(function() {
        for ( var i = 1; i <= 3; i++ ) {
            $(".chicken"+i+" b").html("Hey " + i);
        }
    });
</script>

</body>
</html>