Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 事件监听器(单击,链接到显示页面)在RubyonRails项目中只工作一次_Javascript_Ruby On Rails_Ruby - Fatal编程技术网

Javascript 事件监听器(单击,链接到显示页面)在RubyonRails项目中只工作一次

Javascript 事件监听器(单击,链接到显示页面)在RubyonRails项目中只工作一次,javascript,ruby-on-rails,ruby,Javascript,Ruby On Rails,Ruby,这里没有。我有一个index.html.erb文件,它以表格格式列出了我数据库中的客户机,表格中的每一行都可以单击,作为指向每个客户机各自显示页面的链接。唯一的问题是,虽然我附加的事件侦听器可以工作,但它只工作一次。如果导航回索引页面,我将无法再单击客户机索引表行。我跟随YouTube教程走了这么远。我将代码精简到我认为相关的程度。提前谢谢你 编辑:我想强调的是,这是在一个HTML表中,指的是单击HTML表行。这意味着普通的标签和ERB链接到不是选项 <tbody>

这里没有。我有一个
index.html.erb
文件,它以表格格式列出了我数据库中的客户机,表格中的每一行都可以单击,作为指向每个客户机各自显示页面的链接。唯一的问题是,虽然我附加的事件侦听器可以工作,但它只工作一次。如果导航回索引页面,我将无法再单击客户机索引表行。我跟随YouTube教程走了这么远。我将代码精简到我认为相关的程度。提前谢谢你

编辑:我想强调的是,这是在一个HTML表中,指的是单击HTML表行。这意味着普通的
标签和ERB
链接到
不是选项

      <tbody>
        <% @clients.each do |client| %>
          <tr data-href="<%= client_path(client) %>" class="odd:bg-white even:bg-gray-100 cursor-pointer hover:bg-indigo-300 hover:ring-blue-700 hover:ring-inset">
            <td class="px-6 py-4 whitespace-nowrap text-sm font-medium text-gray-900">
              <%= client.first_name + " " + client.last_name %>
            </td>
          </tr>
        <% end %>
      </tbody>

<script>
  document.addEventListener("DOMContentLoaded", () => {
      const rows = document.querySelectorAll("tr[data-href]");

      rows.forEach(row => {
          row.addEventListener("click", () => {
              window.location.href = row.dataset.href;
          });
      });
  });
</script>

document.addEventListener(“DOMContentLoaded”,()=>{
const rows=document.querySelectorAll(“tr[data href]”);
rows.forEach(row=>{
row.addEventListener(“单击”,()=>{
window.location.href=row.dataset.href;
});
});
});

我猜这与TurboLink冲突,TurboLink默认在新Rails项目上启用(目前)。尝试将
window.location.href=row.dataset.href
替换为
Turbolinks.visit(row.dataset.href)


用户对此有更多信息。

为什么需要JS才能进入客户端页面?或者它是一个poop?它是一个表中的一个表行,这意味着我不能使用标记或链接,但在用你的代码替换我的代码后,它仍然以相同的方式运行。谢谢你给我指明了正确的方向!我会在找到答案后发布我的答案。最后一个难题是将事件侦听器中的
DOMContentLoaded
替换为
turbolinks:load
。更换后,它的工作完美。谢谢