Javascript for循环不按预期运行

时间:2016-01-14 18:02:53

标签: javascript jquery

我在javascript中遇到意外行为(利用jquery.tile.js)。这部分正在运作:

  $(function(){
      var minWidth = 450;
      if (minWidth <= $(window).width()) {
        $('.tile-portfolio').tile(3);
        $(window).load(function() {
          $('tile-portfolio').tile(3);
        });
   }
     });

...但这部分正在工作:

var tile = [ '.tile-portfolio', ".tile-blog", ".tile-qiita" ];

for (var i = 0, i < tile.length; i++) {
  $.function(){
    $(tile[i]).tile(3);
    $(window).load(function() {
      $(tile[i]).tile(3);
    });
});

}

您可以提供任何帮助,我们将不胜感激!

3 个答案:

答案 0 :(得分:2)

循环和使用jQuery时出错:

 for (var i = 0; i < tile.length; i++) {
    $(function(){
          // ...
      })

将其更改为:

Syntax error

这些都是语法错误,会阻止您的代码运行。 在浏览器的开发人员工具中打开控制台,您应该看到$

object.function() {...是一个函数一个对象,但函数对象不是对象属性的有效键,因此,将始终是无效的语法。

答案 1 :(得分:1)

您必须在;循环定义中用分号for替换逗号for (var i = 0, i < tile.length; i++) { ______________^

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

应该是:

edge(a,e).
edge(e,d).
edge(d,c).
edge(c,b).
edge(b,a).
edge(d,a).
edge(e,c).
edge(f,b).

cycle(X) :-
    cycle(X, []).

cycle(Curr, Visited) :-
    member(Curr, Visited),
    !.
cycle(Curr, Visited) :-
    edge(Curr, Next),
    cycle(Next, [Curr|Visited]).

希望这有帮助。

答案 2 :(得分:0)

除了其他答案之外,它不起作用,因为当第二个代码块遇到$(window).load()处理程序时,i不再具有您期望它具有的值:它是由循环定义,此后已完成,因此i的值为3.

$(window).load(function() {
  //this line won't be what you expect
  //because this is an asynchronous event handler method
  $(tile[i]).tile(3);
  //check by doing this:
  alert("i at this point is: " + i);
});