Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 19.11.2014, 15:06
Профессор
Отправить личное сообщение для jsnb Посмотреть профиль Найти все сообщения от jsnb
 
Регистрация: 15.03.2014
Сообщений: 561

Сообщение от Siend Посмотреть сообщение
Так в том то и проблема что мне необходимо чтобы в test.js было .ready
Зачем?

Сообщение от Siend Посмотреть сообщение
да и тогда почему пример с $( document ).ready(function() {testFunction()}) не сработал, он же тоже должен выполниться, после того как все загрузится?
Сообщение от jsnb
во-вторых, доступа к testFunction у тбя всё равно не будет т.к. оно недоступно из вне.
Ну сделай window.testFunction = testFunction, если уж так хочешь в глобал закинуть из ready.
Ответить с цитированием
  #12 (permalink)  
Старый 19.11.2014, 15:19
Профессор
Отправить личное сообщение для jsnb Посмотреть профиль Найти все сообщения от jsnb
 
Регистрация: 15.03.2014
Сообщений: 561

Как я понял тебе надо что-то вроде этого:
(function(){

var menuObj = {
  method1: method1,
  method2: method2,
  method3: method3
}

function method1() {
  //some code
  return menuObj;
}

function method2() {
  //some code
  return menuObj;
}

function method3() {
  //some code
  return menuObj;
}

window.yourMenu = menuObj;

$(document).ready(function() {
  //этот код будет выполнен после загрузки документа
  yourMenu.method1();
  yourMenu.method2();
  yourMenu.method3();

  yourMenu.method1().method2().method3();
});

})();


Ну а еще лучше сделать полноценный конструктор.

Последний раз редактировалось jsnb, 19.11.2014 в 15:22.
Ответить с цитированием
  #13 (permalink)  
Старый 19.11.2014, 15:21
Профессор
Отправить личное сообщение для Siend Посмотреть профиль Найти все сообщения от Siend
 
Регистрация: 04.02.2012
Сообщений: 196

Сообщение от jsnb
Сообщение от Siend
Так в том то и проблема что мне необходимо чтобы в test.js было .ready
Цитата:
Зачем?
В тесте то не зачем, но в нормальном скрипте у меня если убрать
$(document ).ready(function() { ... })

вылезает ошибка на строке:
menu.onmousedown = myDown;

А если добавить
$(document ).ready(function() { ... })

то все ок!!!

вот полный код:
var menu = document.getElementById('menu')
    menu.onmousedown = myDown;
    menu.onmouseup = myUp;
    menu.onmousemove = myMove;

    function myDown(e) {
        switch (e.button) {
            case 0:
                break
            case 2:
                switch (showMenu) {
                    case false:             
                        xMenu = xMouse;
                        yMenu = yMouse;
                        showMenu = true;
                        drawMenu()
                        break
                    case true:
                        clearMenu();
                        break
                }
                break
            default:
                alert('Bad request');
                break
        }
    }
Ответить с цитированием
  #14 (permalink)  
Старый 19.11.2014, 15:25
Профессор
Отправить личное сообщение для Siend Посмотреть профиль Найти все сообщения от Siend
 
Регистрация: 04.02.2012
Сообщений: 196

ААААААААА, ФАК ФАК ФАК ФАК, Я ЛООХ!
Кароче, да, вы были правы) Ошибка то вылезала потому что я скрипт подключал в head а там еще не существует элемента с id="Menu"
>__________<

Вообщем осталась последняя проблема которую так и не решил)
У меня в menu.js нужно указать функцию которая будет описана в основном коде страничке, т.е. в index.html

P.S.: Уже решил, в принципе все заработало и так, стоило описать функцию перед подгрузкой скрипта.

Спасибо огромное за помощь, побольше вам жирных плюсов в репутацию!)

Последний раз редактировалось Siend, 19.11.2014 в 15:27.
Ответить с цитированием
  #15 (permalink)  
Старый 19.11.2014, 15:28
Профессор
Отправить личное сообщение для jsnb Посмотреть профиль Найти все сообщения от jsnb
 
Регистрация: 15.03.2014
Сообщений: 561

Ну так и суй в ready только тот код, который должен непосредственно с DOM работать. В данном случае это вот этот код:
var menu = document.getElementById('menu')
    menu.onmousedown = myDown;
    menu.onmouseup = myUp;
    menu.onmousemove = myMove;
Ответить с цитированием
  #16 (permalink)  
Старый 19.11.2014, 15:40
Профессор
Отправить личное сообщение для Siend Посмотреть профиль Найти все сообщения от Siend
 
Регистрация: 04.02.2012
Сообщений: 196

А нет, кстати, что забавно все равно остался косяк который теперь мне тем более не понятен.

<script>
        function MyMenuActions(a) { alert(a)}
    </script>
<script src="menu.js" type="text/javascript"></script>
    <script>
        myMenu
    </script>

Так все ок, на myMenu не ругается, а вот если сделать
myMeny.AddMenu("Main","New") Выдает ошибку, мол знать не знаю таких функций. В js эта функция выглядит так:

window.myMenu = function () {
        
        var pub

        function AddMenu(a,b) {
            for (var i=0;i<menuList.length;i++)
                if (menuList[i][1] == a) {
                    menuList[i].push(b)
                    menuList.push(b)
                }
            return pub
        }
        
        pub = {
            'AddMenu': AddMenu,
        }
        return pub
    }
Ответить с цитированием
  #17 (permalink)  
Старый 19.11.2014, 15:50
Профессор
Отправить личное сообщение для jsnb Посмотреть профиль Найти все сообщения от jsnb
 
Регистрация: 15.03.2014
Сообщений: 561

Ну так у тебя myMenu - это функция, у нее нет методов. Делай так:
window.myMenu = (function () {
        
        var pub

        function AddMenu(a,b) {
            for (var i=0;i<menuList.length;i++)
                if (menuList[i][1] == a) {
                    menuList[i].push(b)
                    menuList.push(b)
                }
            return pub
        }
        
        pub = {
            'AddMenu': AddMenu,
        }
        return pub
    })();
Ответить с цитированием
  #18 (permalink)  
Старый 19.11.2014, 16:08
Профессор
Отправить личное сообщение для Siend Посмотреть профиль Найти все сообщения от Siend
 
Регистрация: 04.02.2012
Сообщений: 196

ДА, вот теперь это решило проблему)
Спасибо огромное за потраченное на меня время!!!)
Ответить с цитированием
  #19 (permalink)  
Старый 19.11.2014, 19:18
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

Siend, функции принято с маленькой буквы называть. С большой называют классы (в JS - конструкторы).
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
.js отправка формы marciy Общие вопросы Javascript 1 18.05.2014 21:55
AJAX загрузка внешнего скрипта и переопределение documen.write для внешнего скрипта vl2013 AJAX и COMET 19 06.09.2013 19:59
Покдлючение .js скрипта в .js скрипте jule Общие вопросы Javascript 8 01.08.2013 16:27
Зарезервированное слово interface jsjob Общие вопросы Javascript 2 06.03.2013 11:49
Как получить текст/код внешнего файла .js SellOut.Name Общие вопросы Javascript 2 27.08.2011 14:42