【问题标题】:Script tag not running properly脚本标签未正常运行
【发布时间】:2017-08-30 06:46:33
【问题描述】:

我认为最好从显示有问题的代码部分开始:

<script>
    alert("check 1");
</script>

<script>
    alert("check 2");
    $("#exams").change(function(){
        alert("prechanged");
        var exam = $("#exams").val();
        alert("changed");
        alert("<%= examBoard.length %>");
        <% for(var i=0;i<examBoard.length;i++){ %>
            alert("got this far");
            if(<%= examBoard[i].name %> == exam){
                alert("got quite far");
                <% for(var t=0;t<examBoard[i].modules.length;t++){ %>
                    $("#modules").append("<option value='<%= examBoard[i].modules[t].name %>'><%= examBoard[i].modules[t].name %></option>");
                <% } %>
                <% break; %>
            }
        <% } %>
        $(document).ready(function() {
            $('select').material_select();
        });
    });

</script>

然后这段代码在运行时会产生这个输出(这当然是为了显示alert 框而裁剪的):

标题中描述的问题是它从不显示check 2 alert 框或第二个script 标记内的任何其他alert 框。

我没有提供完整的上下文,因为我相信它只会极大地影响可读性并且没有提供任何用处,但以防万一我错了,这里有一个指向完整代码的 Hastebin 链接 (https://hastebin.com/atanusagij.xml)。

应该注意,这是在单击“确定”到check 1 警报框后在控制台中显示的错误,考虑到我现在必须检查代码中的语法十次并且没有发现任何问题,这很奇怪:

我不相信对它所完成的工作的解释甚至是必要的,但无论如何我都会提供一个解释以防万一。实际上,ID 为examsselect html 元素中的每个值都引用了数据库中的一个项目,并且每个项目都嵌入了模块。因此,当用户从第一个select 中选择考试时,程序会更改select 中的选项,ID 为modules,以匹配数据库中考试项目中嵌入的模块。

【问题讨论】:

  • $(document).ready(function() { inside click 函数错误。你的代码会产生错误(检查你的浏览器控制台)
  • 我看不出“检查 2”alert 没有显示的原因。 alert() 是一个阻塞调用。这意味着它将阻止脚本的执行,直到单击“确定”。您是否单击“检查 1”alert 上的确定按钮?
  • @Kashif Yes.1234
  • 如果将所有内容都放在一个脚本标签中会怎样?那它有用吗?
  • @KillerDeath No.

标签: javascript jquery html node.js ejs


【解决方案1】:

DOM 在函数之前监听什么事件?为了更清晰,您需要粘贴 html 代码。您可能还想使用单个脚本标签来运行所有 JS 代码。

【讨论】:

  • 使用单个“脚本”标签似乎没有什么区别,在这种情况下我使用多个标签的唯一原因是因为看起来问题不仅仅是这里的“脚本”标签。您还可以查看 Hastebin 链接以了解完整的上下文。
【解决方案2】:

所以这里的答案有点做作,不幸的是实际上确实降低了代码效率,但是当查看第二个 script 标签时,&lt;% break; %&gt; 意味着代码永远不会到达 if 语句的右括号,这导致看到的错误。简单的解决方案是删除&lt;% break; %&gt;,尽管很有可能有更好的解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多