javascript - Rails 应用程序 JavaScript 放置在 application.js 中时不起作用

标签 javascript ruby-on-rails

我有一个 Rails 应用程序。当 JavaScript 包含在脚本标记的 index.html.erb View 中时,它可以完美地工作。当我将 JavaScript 放在 application.js 文件中时,它根本不起作用。

这是我的整个 application.js 文件。此代码不起作用:

//= require jquery
//= require jquery_ujs
//= require bootstrap-sprockets
//= require turbolinks
//= require_tree .


var acc = document.getElementsByClassName("accordion");
var i;

for (i = 0; i < acc.length; i++) {
    acc[i].onclick = function(){
        this.classList.toggle("active");
        var panel = this.nextElementSibling;
        if (panel.style.display === "block") {
            panel.style.display = "none";
        } else {
            panel.style.display = "block";
        }
    }
}

当包含在实际 View 中的脚本标记中时,完全相同的代码可以完美地工作:

<script>
var acc = document.getElementsByClassName("accordion");
var i;

for (i = 0; i < acc.length; i++) {
    acc[i].onclick = function(){
        this.classList.toggle("active");
        var panel = this.nextElementSibling;
        if (panel.style.display === "block") {
            panel.style.display = "none";
        } else {
            panel.style.display = "block";
        }
    }
}

</script>

有人可以帮我弄清楚为什么会发生这种情况吗?谢谢

最佳答案

您的代码未运行,因为它未包含在已编译的 application.js 中。您可以通过在浏览器中查看 JavaScript 文件的源代码来验证这一点。

您需要添加require_self到 sprocket list ,它注入(inject)文件本身的内容:

//= require jquery
//= require jquery_ujs
//= require bootstrap-sprockets
//= require turbolinks
//= require_self
//= require_tree .

您只需对主“ list ”文件执行此操作,因为 require_tree . 所需的文件当然包括在内。

参见:
-The Assets Pipeline - 2.4 Manifest Files and Directives

关于javascript - Rails 应用程序 JavaScript 放置在 application.js 中时不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43461895/

相关文章:

javascript - 屏幕中央的 jQuery 和 CSS 定位元素

javascript - 为什么点击时我的颜色没有变化?

javascript - 用包含现有段落值的文本区域替换段落

javascript - KonvaJS:缩放整个舞台时如何防止某些形状缩放?

ruby-on-rails - 使用 Paperclip 上传文件夹/多个文件(Rails gem)

ruby-on-rails - 验证自引用关联不会链接回 rails 中的原始实例

ruby-on-rails - 检索shopify Shop 对象?

ruby-on-rails - Ruby 实例变量和局部变量

javascript - Selection.call 真的返回 d3 中的选择吗?

ruby-on-rails - Rails 中的 ActiveRecord 查询