Javascript 试图在rails中隐藏一组具有div id的文本

Javascript 试图在rails中隐藏一组具有div id的文本,javascript,ruby-on-rails,Javascript,Ruby On Rails,好吧,我真的把这件事简化了,看看是怎么回事。我在app/views/tasks/_form.html.erb文件中内联了所有这些内容,因此rails查找js应该不会有任何问题 我有一个按钮 <input type=button value="toggle foo" onclick="showHide('toDate');"> 在我的部门 <div id="toDate"> To Date <%= text_field_tag "to_date

好吧,我真的把这件事简化了,看看是怎么回事。我在app/views/tasks/_form.html.erb文件中内联了所有这些内容,因此rails查找js应该不会有任何问题

我有一个按钮

<input type=button value="toggle foo" onclick="showHide('toDate');">

在我的部门

 <div id="toDate">
    To Date
    <%= text_field_tag "to_date" %>
    </br>
  Days to Exclude
  <% Date::DAYNAMES.each_with_index do |day_name, wday| %>
    <% if day_name == "Sunday" || day_name == "Saturday" %>
      <%= check_box_tag "ignored_days[]", wday, true %>
    <% else %>
      <%= check_box_tag "ignored_days[]", wday %>
    <% end %>
    <%= day_name %>
  <% end %>
  </div>

迄今为止

排除天数
然后js

 <script language="javascript" type="text/javascript">
    function showHide(elementId) {
        if (document.getElementById) {
            var element = document.getElementById(elementId);
            if (element.style.visibility == 'hidden') {
                element.style.visibility = 'visible';
            } else if (element.style.visibility == 'visible') {
                element.style.visibility = 'hidden';
            }
        }
    }
    </script>

函数showHide(elementId){
if(document.getElementById){
var element=document.getElementById(elementId);
if(element.style.visibility==“hidden”){
element.style.visibility='visible';
}else if(element.style.visibility==“可见”){
element.style.visibility='hidden';
}
}
}

想法?

您是否包括jQuery

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>

来源:

您必须在呈现HTML后执行代码,您可以通过执行以下操作来实现:

$(document).ready(function(){
    $('#toDate').hide();
});

确保jQuery和资产文件都导入到布局中。

如果您确定包含jQuery,请确保在就绪块上的jQuery文档中运行代码,如下所示:

$(function(){
  $('#toDate').hide();
});

还请注意,rails的新版本包括TurboLink,这部分中断了jQuery的document.ready事件。为了避免这种情况,您可以拦截turbolinks事件或包括jquery.turbolinks,如下所述:

I have//=require jquery//=require jquery\u ujs in application.js何时调用hide?绑定到其他地方,点击文档准备好了吗?能否共享表示包含javascript库和jquery的代码片段?我在应用程序中有//=require jquery//=require jquery_ujs。jsNope…不起作用。我能够添加警报(“测试”);我可以看到警报,所以我知道JS正在工作。控制台中也没有错误。
$(function(){
  $('#toDate').hide();
});