jquery 来自外部文件未加载
jquery from external file not loading
所以我知道这个问题已经被问过很多次了,但我似乎无法解决这个问题,即使它对我来说看起来是正确的。来自外部文件的 jquery 函数无法正确加载。
我的 tableMethods.js 外部文件看起来像
$(function(){
// Write FITS
function writeFits(){
var data = $('.sastable').bootstrapTable('getData');
var name = $('#fitsname').val();
$.getJSON($SCRIPT_ROOT + '/writeFits', {'data':JSON.stringify(data),'name':name},
function(data){
$('#fitsout').text(data.result);
});
}
// Delete rows from data table
function deleteRows(){
var $table = $('.sastable');
var $delete = $('#delete');
var ids = $.map($table.bootstrapTable('getSelections'), function (row) {
return row.id
});
$table.bootstrapTable('remove', {
field: 'id',
values: ids
});
}
})
我的htmlheader长得像
<script type="text/javascript" src="/static/js/jquery-1.11.2.min.js"></script>
<script type="text/javascript" src="/static/js/bootstrap.min.js"></script>
<script type="text/javascript" src="/static/js/bootstrap-table.js"></script>
<script type='text/javascript' src="/static/js/tableMethods.js"></script>
当我检查检查器时,当我单击看起来像
的按钮时,它说文件已经加载
<button id="delete" class="btn btn-danger" type='button' onClick='deleteRows()'>Delete Rows</button>
我收到错误
Uncaught ReferenceError: deleteRows is not defined
这是一个范围界定问题。您必须将函数移到 $(function() { ... })
之外
在 JavaScript 中,在函数中专门定义的任何内容通常都保留在函数中:
var x = 3;
(function() {
var y = 1;
})();
console.log(x); // 3
console.log(y); // error
因此,如果您在一个函数中定义一个函数,您只能从您定义它的那个函数中调用它。当试图从其他任何地方调用它时,内部函数似乎是未定义的。
对于你的情况,你可以简单地删除包装函数:
$(function() { // Delete this...
...
}); // And this
有关详细信息,请阅读 You Don’t Know JS: Scope & Closures
所以我知道这个问题已经被问过很多次了,但我似乎无法解决这个问题,即使它对我来说看起来是正确的。来自外部文件的 jquery 函数无法正确加载。
我的 tableMethods.js 外部文件看起来像
$(function(){
// Write FITS
function writeFits(){
var data = $('.sastable').bootstrapTable('getData');
var name = $('#fitsname').val();
$.getJSON($SCRIPT_ROOT + '/writeFits', {'data':JSON.stringify(data),'name':name},
function(data){
$('#fitsout').text(data.result);
});
}
// Delete rows from data table
function deleteRows(){
var $table = $('.sastable');
var $delete = $('#delete');
var ids = $.map($table.bootstrapTable('getSelections'), function (row) {
return row.id
});
$table.bootstrapTable('remove', {
field: 'id',
values: ids
});
}
})
我的htmlheader长得像
<script type="text/javascript" src="/static/js/jquery-1.11.2.min.js"></script>
<script type="text/javascript" src="/static/js/bootstrap.min.js"></script>
<script type="text/javascript" src="/static/js/bootstrap-table.js"></script>
<script type='text/javascript' src="/static/js/tableMethods.js"></script>
当我检查检查器时,当我单击看起来像
的按钮时,它说文件已经加载<button id="delete" class="btn btn-danger" type='button' onClick='deleteRows()'>Delete Rows</button>
我收到错误
Uncaught ReferenceError: deleteRows is not defined
这是一个范围界定问题。您必须将函数移到 $(function() { ... })
在 JavaScript 中,在函数中专门定义的任何内容通常都保留在函数中:
var x = 3;
(function() {
var y = 1;
})();
console.log(x); // 3
console.log(y); // error
因此,如果您在一个函数中定义一个函数,您只能从您定义它的那个函数中调用它。当试图从其他任何地方调用它时,内部函数似乎是未定义的。
对于你的情况,你可以简单地删除包装函数:
$(function() { // Delete this...
...
}); // And this
有关详细信息,请阅读 You Don’t Know JS: Scope & Closures