2013-10-27 59 views
-2

当我点击h2时,我试图用它的数组索引更新每个按钮的html。简单的循环会产生奇怪的结果

我试着使用for循环,但它并没有更新每个按钮只#1,3,但2和4保持不变。我究竟做错了什么?感谢

演示:http://jsfiddle.net/BVmUL/96/

HTML

<div class='container text-center'> 
    <h2>Click me to toggle the button</h2> 
    <button type='submit' class='btn btn-primary btn-large'>Test</button> 
    <button type='submit' class='btn btn-danger btn-large'>Test</button> 
    <button type='submit' class='btn btn-success btn-large'>Test</button> 
    <button type='submit' class='btn btn-info btn-large'>Test</button> 
</div> 

JS

<script> 
var buttons = [ 
    $("button:eq(0)"), 
    $("button:eq(1)"), 
    $("button:eq(2)"), 
    $("button:eq(3)") 
]; 

$("h2").click(function(){ 
    for(i = 0; i < 3; i++) { 
     buttons[i].text("Array element: " + i++); 
    } 
}); 
</script> 
+0

尝试使用http://api.jquery.com/odd-selector/ – LHH

回答

3

那是因为你在递增循环的中间

buttons[i].text("Array element: " + i++); 

将其更改为

buttons[i].text("Array element: " + i); 
2

因为你有i++内循环。

buttons[i].text("Array element: " + i++); 

使其

buttons[i].text("Array element: " + i); 
2
var buttons = [ 
    $("button:eq(0)"), 
    $("button:eq(1)"), 
    $("button:eq(2)"), 
    $("button:eq(3)") 
]; 

$("h2").click(function(){ 
    for(i = 0; i < 4; i++) { // here 
     buttons[i].text("Array element: " + (i + 1)); // and here 
    } 
}); 
0
for(i = 0; i < 3; i++) { 
    buttons[i].text("Array element: " + i++); 
} 

改变它

for(i = 0; i < 4; i++) { 
    buttons[i].text("Array element: " + i); 
} 

需要注意的是,你犯了两个错误,一个是循环只有3元,另一个是递增我两次。

1
for(i = 0; i < 3;) { 
    buttons[i].text("Array element: " + i++); 
} 

如果您想在循环中增加,请删除for语句中的第三个声明。否则,你会增加两次。