在我的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
工作时我缺少什么?
答案 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>