无法让JS document.getElementById在我的rails视图中工作

时间:2016-12-27 20:18:42

标签: javascript ruby-on-rails

在我的views/user/index.html.erb中,我有:

<div id="heading">There are <%= @user.length %> users in here</div>

在我的assets/javascripts/stuff.js中,我有:

document.getElementById("heading").innerHTML = "No one here";

然而,当我重新加载页面时,js片段不起作用,文本不变。但是,当我将alert("test")放入我的`stuff.js文件中时,会弹出一个警告框,让我知道至少正在拾取JavaScript。

getElementById工作时我缺少什么?

2 个答案:

答案 0 :(得分:1)

如果您使用带有Turbolink 5的rails 5,您应该使用此事件来确保元素在那里。

document.addEventListener("turbolinks:load", function() {
    document.getElementById("heading").innerHTML = "no one here";
});

如果您使用的是Turbolink的早期版本,请使用page:load代替turbolinks:load

答案 1 :(得分:1)

看起来你在DOM加载之前运行脚本。如果是这种情况,请尝试将代码的调用放在正文标记的末尾。

<body>
<div id="heading">There are <%= @user.length %> users in here</div>

...

<script src="assets/javascripts/stuff.js"></script>
</body>