【问题标题】:javascript forloop doesn't run all codejavascript for 循环不会运行所有代码
【发布时间】:2012-06-28 00:32:10
【问题描述】:

所以我确实有这个循环,但是当它生效后它会停止,当我从循环中删除该代码并由我定义 x 时,它确实可以正常工作。什么是在效果后停止该功能?此外,当我尝试不使用fadeTo 并删除该函数后生效并将其放在逗号后面($('#item' + x + ' p').html(obchody[window.obchod][x]['doby_a_kontakty'])时,它也可以工作(但出现一些错误并在第一次循环后停止)。

for (var x in obchody[window.obchod]) {
    $('#item' + x + ' p').fadeTo(350, 0, function () {
        $('#item' + x + ' p').html(obchody[window.obchod][x]['doby_a_kontakty']).fadeTo(350, 1);
    });
}

问题仍然存在,现在当我使用this 而不是$('#item' + x + ' p') 时,它运行但迟到了。这是一个示例,我在代码中添加了类似 counter - nuber(number inside function) 的代码。

y = '';
for (var x in obchody[window.obchod]) {
    y += ' ' + x + '(';
    $('#item' + x + ' p').fadeTo(350, 0, function () {
        y += x + ')';
        $(this).html(obchody[window.obchod][x]['doby_a_kontakty'] + y).fadeTo(350, 1);
    });
}

这个测试的结果是:y==0( 1( 2( 3( 4( 5( 6( 7(7)7)7)7)7)7)7)7),我需要它像 y==0(0) 1(1) 2(2) 3(3) 4(4) 5(5) 6(6) 7(7) 一样运行,因为我不能在其中使用 x,但这无济于事。

【问题讨论】:

  • 首先,您不需要在回调函数中使用$('#item' + x + ' p') - 只需使用$(this)。其次,你能把它放在一个小提琴里,这样我们就可以玩了吗?此外,html(obchody[window.obchod][x]['doby_a_kontakty']) 应更改为 html(x['doby_a_kontakty'])
  • 我不明白这个想法,但将$('#item' + x + ' p') 更改为$(this) 有效,所以谢谢:) 但不,html(x['doby_a_kontakty']) 不起作用,它必须是@ 987654335@
  • 所以请将您的解决方案添加为单独的答案并接受它:-)
  • 不要在标题中添加“已解决”,这不是这里的工作方式。相反,如果它与您编辑后发布的公认答案不同,请解释您所做的事情。

标签: javascript jquery for-loop


【解决方案1】:

试试这个...

function fade(x) {
    $('#item' + x + ' p').fadeTo(350, 0, function() {
        $(this).html(obchody[window.obchod][x]['doby_a_kontakty']).fadeTo(350, 1);
    });
}

for (var x in obchody[window.obchod]) {
    fade(x);
}

【讨论】:

  • 对 OP 的解释是 (a) 在可能的情况下您应该使用 this 而不是通过其 id 再次选择相同的元素,但更重要的是 (b)回调运行循环已完成执行,因此x 将是循环结束时的任何内容,而不是该特定元素的内容。
  • 如你所说,它的运行方式类似于 y==0( 1( 2( 3( 4( 5( 6( 7(7)7)7)7)7)7)7)7) 但是,我需要它运行方式类似于 y==0(0) 1(1) 2(2) 3(3) 4(4) 5(5) 6(6) 7(7)
  • 如果你想让它做 1 次淡入淡出,然后是回调,然后是下一次淡入淡出等等,那么你需要解释什么是 obchod 和 obchod。上面的修改不会那样做。
  • 好吧,我通过 0( 1( 2( 3( 4( 5( 6( 7(7)6)5)4)3)2)1)0) 解决了它(只是相同的计数器运行, 但是 y--; > for(var x in obchody[window.obchod]){var y=x;$('#item'+x+' p').fadeTo(350,0, function(){$(this).html(obchody[window.obchod][x-y]['doby_a_kontakty']).fadeTo(350,1);y--;});} (格式化在这里不起作用所以..)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-30
相关资源
最近更新 更多