HI,
由于某种原因,根据firebug控制台选项卡未正确定义函数'shift()'。我从教程中直接拿到了这个,不知道我在这里做错了什么。
//animate post feed cycle
var delay = 2000; // you can change it
var count = 3; // How much items to animate
var showing = 2; //How much items to show at a time
var i = 0;
function move(i) {
return function() {
$('.feed'+i).remove().css('display', 'none').prependTo('#recent_listings');
}
}
function shift() {
var toShow = (i + showing) % count;
$('.feed'+toShow).slideDown(1000, move(i));
$('.feed'+i).slideUp(1000, move(i));
i = (i + 1) % count;
setTimeout('shift()', delay);
}
setTimeout('shift()', delay);
标记看起来像这样(双括号是django上下文变量)
<div id="recent_listings">
<h2>Recent Listings</h2>
{% for post in posts %}
<div class="entries feed{{forloop.counter}}">
<a href="{{post.get_absolute_url}}">
<div class="photo">
<img src="{{site}}media/no-image.png"></img>
</div>
<div class="listings">
<div class="title">
<h3>{{post.title|truncatewords:5}}</h3>
</div>
</div>
</div>
{% endfor %}
</div>
感谢您的帮助!
答案 0 :(得分:3)
首先,你没有关闭你的标签(不是真正的问题,但可能会在以后引起其他问题)
其次看起来它可能是一个js上下文问题。您可能希望将您的函数声明为公共函数,以便将移位声明更改为下面的
this.shift = function() {
//code here
}
答案 1 :(得分:0)
扩展@ d1k_is的答案:
您不应该使用字符串调用setTimeout
。字符串很可能不会在您需要的上下文中进行评估。这就是d1k_is建议在全局上下文中定义函数的原因。但是,最好使用对名为
setTimeout(shift, delay);
BTW,因为您“递归”地呼叫setTimeout
,您可能希望改为使用setInterval
。