我在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);
});
});
}
您可以提供任何帮助,我们将不胜感激!
答案 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);
});