javascript函数在放入不同文件时不工作

javascript函数在放入不同文件时不工作,javascript,jquery,nested,modular,Javascript,Jquery,Nested,Modular,我对这整件事还不熟悉,我正在制作一个web应用程序,它严重依赖于将html页面动态加载到主页上的一个div中 主页链接到各种js文件,包括jquery和我自己的一些文件 除此之外,每个加载的html文件都链接到自己的js文件以控制用户交互。其中一些还有一个div,html页面被加载到其中 我注意到的一点是,一些html页面对加载到主页中的脚本的反应较慢。需要调整全局性的东西,比如单击按钮时突出显示,以便在某些页面上可以看到它们 另一件事正在发生,这真的让我很恼火,就是有些脚本在单独的文件中无法工

我对这整件事还不熟悉,我正在制作一个web应用程序,它严重依赖于将html页面动态加载到主页上的一个div中

主页链接到各种js文件,包括jquery和我自己的一些文件

除此之外,每个加载的html文件都链接到自己的js文件以控制用户交互。其中一些还有一个div,html页面被加载到其中

我注意到的一点是,一些html页面对加载到主页中的脚本的反应较慢。需要调整全局性的东西,比如单击按钮时突出显示,以便在某些页面上可以看到它们

另一件事正在发生,这真的让我很恼火,就是有些脚本在单独的文件中无法工作,不管这些文件是链接到主页还是不同的子页面。我需要将实际函数放入实际子页面的js文件中

这个从数据库填充html表的简单函数就是其中之一

function fill_grid(collection, columns){

    var jsonObj = JSON.stringify(columns);

    param = "collection=" + collection + "&columns=" + jsonObj;

        // Ajax call ~~~~~>

    $.ajax({
        type:           'POST',
        url:            'back/fill_grid.php',
        processData:    false,
        data:           param,
        dataType:       'json',
        success:        function(data){

                            $('.grid_foot').text(data.rows.length + ' records');

                            $.each(data.rows, function(count, item) {

                                var c = 0;
                                var cells = '';

                                while (c < columns.length) {

                                    cells += '<td class="'+ columns[c] +'">' + item['cell'][c] + '</td>';

                                    c++;
                                }

                                var newTr = '<tr id="' + item['id'] + '">'+ cells +'</tr>';
                                $('.grid_wrapper table').append(newTr);
                            });

                            var c = 0;

                            while (c < columns.length) {

                                var min_width = $('div.' + columns[c]).css('min-width');
                                $('td.' + columns[c]).width(min_width);

                                var col_width = $('td.' + columns[c]).width(); 
                                $('div.' + columns[c]).width(col_width);

                                c++;
                            }

                            var c = columns.length - 1;

                            var col_width = $('div.' + columns[c]).width(); 
                            $('td.' + columns[c]).width(col_width);
                        }       
    });
}
函数填充网格(集合、列){
var jsonObj=JSON.stringify(列);
param=“collection=“+collection+”&columns=“+jsonObj;
//Ajax调用~~~~~>
$.ajax({
键入:“POST”,
url:'back/fill_grid.php',
processData:false,
数据:param,
数据类型:“json”,
成功:功能(数据){
$('.grid_foot').text(data.rows.length+'records');
$.each(数据行、函数(计数、项){
var c=0;
var单元格=“”;
while(c
…尽管您可以看到它是为模块化应用而设计的。ajax调用的参数和表的构造被传递给它。但是当它在一个单独的文件中时,它不会运行,尽管firebug和dom inspector都没有显示错误,当然,当它粘贴到这两个文件的控制台时,它也会工作

为什么会这样?是因为嵌套的html页面吗?您可以加载到页面中的脚本数量是否有限制?其他脚本会干扰它吗?如何调试它

编辑:Firebug和Dom Inspector现在都告诉我没有定义“data_grid()”,它找不到datagrid.js事件,尽管我在脚本标记中使用了正确的路径,甚至在主页拥有js文件之前就包含了它!我甚至刷新了浏览器缓存并重新启动了它,但它仍然这样说


编辑:在一些窥探之后,我在其中一个子页面上发现了一个bum链接,在修复它之后,我不再得到404文件未找到错误。但是我仍然得到一个未定义的函数错误。

我刚刚从文件中删除了jquery“$(document).ready(function(){});”,它工作得非常好!现在我想知道这是否会导致它有时只起作用。

首先,使用
alert()
查看是否包含JS文件。然后对函数体执行同样的操作。如果调用了一个不存在的函数,那么肯定会抛出一个错误。JavaScript错误控制台会说什么?好了,现在JavaScript控制台告诉我fill_grid()未定义,并且即使在主页上的最后一个脚本标记中调用了js文件,并且路径正确,它也找不到js文件。在尝试调用之前,您是否确保包含fill_grid函数?是的,它已事先包含。在主页的头部,就在主页自己的js文件之前。