隐藏元素取决于 if/else 语句的值不起作用

Hide element depending on value of if/else statement not working

本文关键字:语句 不起作用 else 元素 取决于 if 隐藏      更新时间:2023-09-26

我有一个使用LinkedIn Javascript API对用户进行身份验证的Rails应用程序。我想做的是根据用户是否已注册隐藏元素。我尝试了几件事:

  • 将带有 if/else 语句的代码放在 HTML 底部,然后再</body>
  • 检查document.cookie是否为空字符串,而不是更具体的 if/else

但是,这些都没有隐藏该元素。如果我在页面完成渲染后进入浏览器的控制台并粘贴我的代码,则该元素将隐藏。所以我认为这是一个 JavaScript 加载问题,但我一定做错了什么。谁能对此有所了解?

这是我尝试过的代码,没有一个有效:

<%= content_for(:script_footer) do %>
  <script type="text/javascript">
    // if ($('span.IN-widget:contains("inSign in with LinkedIn")').length > 0) {
    //   $('#select').hide();
    // } else {
    //   $('#select').show();
    // }
    if (document.cookie == "") {
      $('#select').hide();
    } else {
      $('#select').show();
    }
  </script>
<% end %>

和我的应用程序布局:

<!DOCTYPE html>
<html>
<head>
  <title>rdtrip</title>
  <%= stylesheet_link_tag    "application", :media => "all" %>
  <%= yield(:linked_in) %>
  <%= javascript_include_tag "application" %>
  <%= csrf_meta_tags %>
</head>
<body>
<%= yield %>
<%= yield(:script_footer) %>
</body>
</html>

以下命令包装你的jquery/javascript代码:

$(function(){
    // your code here
});

JavaScript 在 DOM 准备就绪之前执行,因此还找不到#select

将其包装在以下任一位置:

$(document).ready( function() {
    // code
});

或:

$(function() {
     // code
});