Rails 4 - 布局仅显示一半时间 javascript

Rails 4 - Layouts only showing half the time with javascript

我在 javascript 中制作了一个小脚本来根据一天显示不同的图像,它工作正常但有一半时间当我加载页面时只显示图像而不显示其余部分应用程序(无菜单)和另一半一切正常。

我把JS代码放在index.html.erb文件里了,因为它真的很小,我应该把它放在其他地方还是其他地方有问题?

编辑:

我最终用 .js.coffee 文件中的 coffeescript 编写它,在函数名称前面加上一个“@”,然后在视图中调用它,但我仍然遇到同样的问题。

查看文件 (app/view/module/index.html.erb)

<script type="text/javascript">
   @myfunction();
</script>

函数:在app/assets/javascripts/module.js.coffee

@day = ->
 today = new Date
 number = today.getDay() + 1
 document.write '<img src="url' + number +'.jpg">'
 return

您不能在脚本标签中使用 coffescript* - sprockets 不会将 coffee 脚本转换为 javascript,浏览器实际上可以 运行.

如果您检查了 browser console,您会发现 @ 在 javascript 中导致语法错误。

SyntaxError: Unexpected token ILLEGAL

当 javascript 遇到语法错误时,它将停止执行脚本。

document.write 将在写入之前擦除 html 中的所有内容,这就是为什么您只能看到图像的原因。 你应该这样做:

placeholder = document.getElementById("placeholder")
placeholder.innerHTML = '<img src="url' + number +'.jpg">'

其中 placeholder 是 html 中的现有元素,id 为 "placeholder"