【问题标题】:Javascript for() loop in Drupal not working?Drupal 中的 Javascript for() 循环不起作用?
【发布时间】:2009-11-12 19:16:40
【问题描述】:

我刚刚花了很长时间试图弄清楚为什么我的 Javascript for() 循环在 Drupal 块中不起作用,我觉得我已经检查了语法 - 知道为什么这不起作用?!

$(document).ready(function() {
var i=0;
while (i<=5)
  {
 alert(i);
  i++;
}
});

这没有任何作用——而且如果我把这样的东西放进去——也不起作用:

for (var i=0; i<31; i++){
alert(i);
}

谢谢!

【问题讨论】:

  • 顺便说一句 - 你不应该直接在 Drupal 中使用 $(document).ready,而是使用 Drupal.behaviors。检查此答案中的链接以了解方式和原因:stackoverflow.com/questions/1717373/…
  • 我同意 Henrik 的观点 - 代码看起来正确,也许 jQuery 没有正确启动 - 尝试在循环外发出警报,看看你是否得到任何响应

标签: javascript drupal


【解决方案1】:

在线程完成执行之前不会发生任何警报。到那时,我已经超过了你的极限。这是一个非常常见的问题。您需要了解 JavaScript 中的闭包。

这是一个很好的概述。 StackOverflow 中也有很多这个问题的答案。

http://james.padolsey.com/javascript/closures-in-javascript/

从那篇文章中,这段代码:

for (var i = 0; i < 100; ++i) {
    myElements[i].onclick = (function(n) {
        return function() {
            alert( 'You clicked on: ' + n );
        };
    })(i);
}

这与您想要的相似。

【讨论】:

  • alert 不会阻止执行吗?我认为这与闭包没有任何关系 - 问题中的代码没有在循环中附加事件处理程序。
  • 嗯。你可能是对的。我要删除并考虑一下。警报应该阻止。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-05-30
  • 2013-07-06
  • 1970-01-01
  • 2020-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多