Rails 6 javascript文件不是';不能正确地抓取html元素
Javascript的新特性。我正在按照javascript教程创建一个简单的TictaToe游戏,并尝试将代码改编为在Rails上工作 我有一个JavaScript文件,其中包含一个函数,该函数应该在单击Rails 6 javascript文件不是';不能正确地抓取html元素,javascript,html,jquery,ruby-on-rails,Javascript,Html,Jquery,Ruby On Rails,Javascript的新特性。我正在按照javascript教程创建一个简单的TictaToe游戏,并尝试将代码改编为在Rails上工作 我有一个JavaScript文件,其中包含一个函数,该函数应该在单击cell元素后运行 当我加载页面时,控制台中的console.log(“script js file loaded”)会显示script js file loaded,因此我知道正在加载javascript文件 我怀疑rails js语法与vanilla js有点不同 app/views/ti
cell
元素后运行
当我加载页面时,控制台中的console.log(“script js file loaded”)
会显示script js file loaded
,因此我知道正在加载javascript文件
我怀疑rails js语法与vanilla js有点不同
app/views/tictactoe/index.html.erb
:
<%= javascript_pack_tag 'script' %>
<div class="board" id="board">
<!--- add data cell so can access in javascript -->
<div class="cell" data-cell></div>
<div class="cell" data-cell></div>
<div class="cell" data-cell></div>
<div class="cell" data-cell></div>
<div class="cell" data-cell></div>
<div class="cell" data-cell></div>
<div class="cell" data-cell></div>
<div class="cell" data-cell></div>
<div class="cell" data-cell></div>
</div>
非常感谢您的帮助。@numbers1311407是正确的,在
应用程序.html.erb
中,您可以使用延迟:true
在加载DOM后运行JS
<%= javascript_pack_tag 'application', defer: true %>
1st off,js是js;“rails js”没有什么特别之处。你的特殊问题只是秩序问题。您的脚本在您查询的DOM之前加载,因此您的脚本无效。将脚本移到正文末尾是常见的做法(出于这个原因和其他原因),应该可以解决您的问题。有关更多详细信息和替代做法,请参阅。
<%= javascript_pack_tag 'application', defer: true %>