【问题标题】:External JS file not triggering外部 JS 文件未触发
【发布时间】:2019-07-16 20:22:16
【问题描述】:

当我使用 onclick 事件触发外部 JS 文件时,我无法启动它。

js文件和html文件在同一目录

这是html:

<head>
  <script src='request.js'></script>
</head>

<h1>Requests</h1>

<table>
  <thead>
    <tr>
      <th>Artist</th>
      <th>Title</th>
      <th>Votecount</th>
      <th>Vote for Song</th>
      <th colspan="3"></th>
    </tr>
  </thead>

  <tbody>
    <% @requests.each do |request| %>
      <tr>
        <td><%= request.artist %></td>
        <td><%= request.title %></td>
        <td class="voteCount"><%= request.voteCount %></td>
        <td><button onclick="upVote()">Vote</button></td>
      </tr>
    <% end %>
  </tbody>
</table>

这是我的 JS 文件中的内容:

function upVote() {
        alert("firing trigger");
        var count = document.getElementsByClassName("voteCount")[0].innerHTML;
        count = parseInt(count);
        count = count + 1;
        count = count.toString();
        document.getElementsByClassName("voteCount")[0].innerHTML = count;
  }

这是我的目录列表:

【问题讨论】:

  • 您也必须向我们展示 JavaScript。
  • 除了缺少 body 和 HTML 标记之外,突出的一件事是该按钮没有类型。这意味着按钮设置为提交,这会导致问题。尝试将 type="button" 添加到您的按钮
  • 可能需要在body标签结束前加上
  • @KatyH。为什么在没有使用 jQuery 的情况下必须添加 jQuery????
  • 查看开发者控制台是否有错误。看看网络标签中的js文件是否有404

标签: javascript html erb jbuilder


【解决方案1】:

发生这种情况是因为代码在生成DOM 之前执行。尝试将&lt;script src='request.js'&gt;&lt;/script&gt; 移动到&lt;body&gt; 的末尾

<body>

<h1>Requests</h1>

<table>
  ...
  ...
</table>
<script src='request.js'></script>
</body>

【讨论】:

  • 将文件添加到我的帖子中
【解决方案2】:

Rails 有一个 assets 文件夹,需要存储外部 JS 文件。

app/assets/javascripts

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-25
    • 2015-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-13
    相关资源
    最近更新 更多