Доступ к функциям JavaScript, определенным в разных файлах - PullRequest
4 голосов
/ 05 апреля 2011

У меня две, казалось бы, связанные проблемы с доступом к функции javascript, определенной в разных местах. Первая проблема, с которой я столкнулся - это вызов функции, которую я определил из консоли firgbug или safari. Я определил функцию с именем getRed, которая выглядит следующим образом:

    function getRed(row, col)
    {
           // do something stuff and return the red value as a float
    }

Я хотел бы иметь возможность протестировать эту функцию с консоли, но каждый раз, когда я пытаюсь вызвать getRed (1,1); например, я получаю сообщение об ошибке, подобное этому: ReferenceError: getRed не определено

Нужно ли делать специальный вызов для определения пространства имен? Я определяю эту функцию в файле JavaScript, называемом Drawing.js, который определен очень рано на моей HTML-странице.

Другая проблема, с которой я сталкиваюсь, - это вызов функции, определенной в том же файле Drawing.js из метода onChange: моей цветовой палитры dojo. Вот код для цветовой палитры:

<script type="text/javascript" src="drawing.js"></script>
 //the method colorChange is inside drawing.js which is defined before the dojo 
 //color palette
 <script src="http://ajax.googleapis.com/ajax/libs/dojo/1.6/dojo/dojo.xd.js"
djConfig="parseOnLoad: true">
</script>
<script type="text/javascript">
        dojo.require("dojox.widget.ColorPicker");
        dojo.addOnLoad(function() {
            var c = new dojox.widget.ColorPicker({
                onChange: function(val)
                {
                    console.log("BEFORE");
                    colorChange(val);
                    console.log("AFTER");
                }
            },
            "picker1");
        });
    </script>

Вот определение changeColor внутри файла drawing.js:

    function colorChange(val)
{
    console("colorChange!");
}

Каждый раз, когда я нажимаю на цветовую палитру, я получаю следующую ошибку: ReferenceError: colorChange не определен.

Я очень новичок в javascript, и я уверен, что эти два вопроса имеют очень похожее и простое решение, но я не смог найти ответ в Интернете. Может кто-нибудь мне помочь?

Я почти уверен, что скрипт загружается, как показано на следующем снимке экрана: enter image description here

Ответы [ 2 ]

3 голосов
/ 05 апреля 2011

Консоль находится в той же глобальной области, что и ваша страница. Поскольку getRed() и colorChange() определены в файле Drawing.js, и ни один из них не может быть найден в глобальной области видимости, я подозреваю, что файл Drawing.js неправильно включен.

Чтобы убедиться, что Drawing.js действительно включен (т. Е. У вас правильный путь к файлу), перейдите на вкладку «Сценарий» Firebug. В нем будут перечислены все скрипты, включенные на текущей странице.

0 голосов
/ 05 апреля 2011

Нет необходимости в дополнительной настройке, все, что вам нужно, это убедиться, что ваш Drawing.js включен, проверьте правильность пути к файлу.Если верно, что с вызовом проблем не должно быть.

Просто проверьте, является ли ваше местоположение js реальным, если ваш файл js находится в корне, просто добавьте косую черту перед местоположением, чтобы он всегда загружал его из www.example.com/drawing.js Добавьте атрибут language = "javascript" в свой

...