Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/426.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用收割台旋转导轨设置限时出现故障2.3.9_Javascript_Ruby On Rails - Fatal编程技术网

Javascript 使用收割台旋转导轨设置限时出现故障2.3.9

Javascript 使用收割台旋转导轨设置限时出现故障2.3.9,javascript,ruby-on-rails,Javascript,Ruby On Rails,我有不同的标题,我想循环通过一个计时器,应该执行每一次页面加载的基础上。目前,我已经工作了一次,但在第一次更改标题后停止。我不太擅长javascript,如果有人能给我指出正确的方向,我将不胜感激 下面是我目前所拥有的 在lib/Rotator.rb中: class Rotator def self.header_rotator(number) partials = ["header", "header2", "header3", "header4", "header5"] ran

我有不同的标题,我想循环通过一个计时器,应该执行每一次页面加载的基础上。目前,我已经工作了一次,但在第一次更改标题后停止。我不太擅长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
然后在application.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\u javascript
render
只发生一次:在主页加载的呈现过程中插入字符串。因此,第二次(以及第三次、第四次、第五次……)rotate()运行时,它将使用完全相同的HTML替换标头

假设您使用的是jquery,load方法可以执行以下操作:

$('#header').load('/some/server/path')
在响应此请求时,不要忘记在没有布局的情况下进行渲染


最后,您确定要使用Ajax吗?您可以预先加载所有头变量,然后使用JavaScript依次显示它们。(有许多jquery cycle或slideshiw插件正是这样做的)

尝试使用setInterval,谢谢您的回复!我不会用任何特别的方法来完成这项任务。我试图使用一种我可以轻松实现的方法。我什么都愿意。