为什么这种奇怪的行为?
脚本标记内的javascript错误导致第二个脚本标记中包含的javascript无法正常工作。评论坏线允许第二个包含的脚本工作。
我的问题是,它为什么会这样?不应该在第二个包含的脚本中不受单独的,不相关的脚本元素中的任何错误的影响吗?
我花了一些时间来解决这个问题,因为虽然我在控制台中看到了错误,但它们并没有包含在我自己的脚本中,因此看起来无关紧要。
以下是控制台错误:
jquery.table.addrow.js:26 Uncaught TypeError: $(...).live is not a function
at ExpandableTable.live (jquery.table.addrow.js:26)
at init.$.fn.btnAddRow.$.fn.tableAutoAddRow (jquery.table.addrow.js:299)
at HTMLDocument.<anonymous> (?c=cf&v=sis&sf=cs&n=63:28)
at fire (jquery.js:3048)
at Object.fireWith [as resolveWith] (jquery.js:3160)
at Function.ready (jquery.js:433)
at HTMLDocument.completed (jquery.js:104)
这是导致错误的代码。在我对第一个<script>
元素中的违规代码进行评论后,第二个<script>
元素完美运行:
<script type='text/javascript' src='https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js'></script>
<link rel="stylesheet" href="/includes/js/jquery-ui/jquery-ui.min.css">
<script src="/includes/js/jquery-ui/external/jquery/jquery.js"></script>
<script src="/includes/js/jquery-ui/jquery-ui.min.js"></script>
<script type='text/javascript' src='/includes/js/jquery.tablesorter.min.js'></script>
<script type='text/javascript' src='/includes/js/jquery.jeditable.mini.js'></script>
<script type='text/javascript' src='/includes/js/jquery.table.addrow.js'></script>
<script type="text/javascript">
$(document).ready(function() {
// THESE ARE THE BAD LINES
$('.appendRow').btnAddRow({rowNumColumn:'rowNumber'});
$('.delRow').btnDelRow();
});
</script>
<script type="text/javascript" src="asdf.js"></script>
asdf.js内部没有任何内容可行,除非我评论2&#34;坏线&#34;在第一个脚本中。 E.g。
asdf.js:
$(document).ready(function() {
alert('hahaha'); // no output. document is never ready?
});
现在,如果我评论&#34;坏线&#34;在这样的脚本中:
//$('.appendRow').btnAddRow({rowNumColumn:'rowNumber'});
//$('.delRow').btnDelRow();
然后脚本2工作!所以我不认为问题可能是jQuery没有被加载。否则,在评论&#34;坏线&#34;之后,脚本2仍然无法正常工作。在脚本1中。