【发布时间】: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 为exams 的select html 元素中的每个值都引用了数据库中的一个项目,并且每个项目都嵌入了模块。因此,当用户从第一个select 中选择考试时,程序会更改select 中的选项,ID 为modules,以匹配数据库中考试项目中嵌入的模块。
【问题讨论】:
-
$(document).ready(function() {insideclick函数错误。你的代码会产生错误(检查你的浏览器控制台) -
我看不出“检查 2”
alert没有显示的原因。alert()是一个阻塞调用。这意味着它将阻止脚本的执行,直到单击“确定”。您是否单击“检查 1”alert上的确定按钮? -
@Kashif Yes.1234
-
如果将所有内容都放在一个脚本标签中会怎样?那它有用吗?
-
@KillerDeath No.
标签: javascript jquery html node.js ejs