使用 setTimout 进行标题旋转 Rails 2.3.9 时出现问题
Trouble using setTimout for header rotation Rails 2.3.9
我有不同的标题,我想根据每次加载页面时应执行的计时器进行循环访问。目前我的工作一次,但在第一次更改标题后停止。我不太擅长javascript,如果有人能指出我正确的方向,我将不胜感激。
以下是我目前的情况。
在lib/Rotator.rb中:
class Rotator
def self.header_rotator(number)
partials = ["header", "header2", "header3", "header4", "header5"]
random_header = partials[number]
return random_header
end
end
然后在应用程序.html.haml 的标题部分中,我有:
var start_rotate = setTimeout(rotate, 5000);
function rotate() {
remote_function(:url => {:action})
$("#header").replaceWith('#{escape_javascript( render :partial => "shared/#{Rotator.header_rotator(rand(5))}")}')
start_rotate = setTimeout(rotate, 5000);
}
正如我所说,这工作正常,但只旋转一次然后停止。
任何帮助将不胜感激!
这与其说是关于 js,不如说是关于了解什么在何时何地运行。
如果您查看正在渲染的 HTML,事情应该会变得更加清晰。对escape_javascript
的调用,render
只发生一次:当该字符串在主页加载的渲染过程中值时。所以第二次(以及第三次,第四次,第五次...)次rotate()运行它正在用完全相同的HTML替换标头。
假设你使用的是jquery,load方法可以做到这一点:
$('#header').load('/some/server/path')
当您响应此请求时,不要忘记在没有布局的情况下进行渲染。
最后,你确定要使用Ajax吗?您可以预先加载所有标头变体,并使用JavaScript依次显示它们。(有许多jQuery Cycle或slideshiw插件正是这样做的)
相关文章:
- Rails 4资产管道Heroku生产javascript参考问题
- React Rails应用程序中动态子项的密钥分配问题
- 在我的Rails应用程序中使用Stripe对卡充电时出现问题
- Ruby on Rails 4:在 Rails Web 应用程序中添加 Javascript 文件时遇到问题
- Rails的问题,haml + javascript在字段对象的模糊
- 有没有一种方法可以在IE8中解决我的Rails javascript应用程序.js的问题
- Ruby(rails)时间戳和jQuery timeago插件出现问题
- Rails 4.0.1 JavaScript资产管道-跨浏览器支持-加载问题
- 混合 Rails 和 JavaScript 代码时的引号问题
- Ruby on Rails 新人的问题
- 在Backbone with Rails 3.x中面临多个路由器的问题
- 使用 setTimout 进行标题旋转 Rails 2.3.9 时出现问题
- Rails AJAX 销毁 - 重新渲染索引问题
- Rails & Youtube API:加载 iframe 时出现问题
- 尝试在 RAILS 中渲染 JS 会导致问题
- Rails 3 Ajax“双重发布请求”问题
- 直接从rails视图发送javascript的任何问题
- 带有 Rails 3.1 的 AngularJS - 加载 Angular 种子时遇到问题
- Rails 基文件具有调用函数 C 的函数 A,但 C 是在两个 JS 文件中定义的.如何按页解决此问题
- BackboneJS + Ruby on Rails (rails-api) 跨域问题