Функции javascript не работают, когда в разных файлах - PullRequest
0 голосов
/ 21 октября 2010

Я новичок во всем этом, и я делаю веб-приложение, которое в значительной степени опирается на динамически загруженные 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);
                        }       
    });
}

..Хотя, как вы можете видеть, он предназначен для модульного применения.Параметры для вызова ajax и построения таблицы передаются ему.Но он не будет работать, когда находится в отдельном файле, хотя firebug и dom inspector не показывают ошибок, и, конечно, он будет работать, когда его вставят в консоль обоих.

Почему это происходит?Это из-за вложенных HTML-страниц?Есть ли ограничение на количество скриптов, которые вы можете загрузить на страницу?Могут ли другие сценарии вмешиваться в это?Как я могу его отладить?

EDIT: Firebug и Dom Inspector теперь оба сообщают мне, что data_grid () не определено и что он не может найти событие datagrid.js, хотя я использовал правильный путь втег сценария, и включил его даже до того, как на главных страницах есть собственный файл js!Я даже очистил кеш браузера и перезапустил его, но он все еще говорит об этом.

РЕДАКТИРОВАТЬ: После некоторого отслеживания я нашел ссылку на задницу на одной из дочерних страниц, и после ее исправления я больше не получаю файл 404 ненайдена ошибка.Но я все еще получаю функцию не определена ошибка.

1 Ответ

0 голосов
/ 21 октября 2010

Я только что удалил jquery "$ (document) .ready (function () {});" из файла и все заработало отлично! Теперь мне интересно, будет ли из-за этого работать иногда.

...