Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 03.04.2011, 19:57
Новичок на форуме
Отправить личное сообщение для Игорь Александрович Посмотреть профиль Найти все сообщения от Игорь Александрович
 
Регистрация: 03.04.2011
Сообщений: 8

Почему объект "Кнопка" не видит соседнию функцию?
Это пользовательский скрипт (ФФ3.6). Создает клон кнопку. Когда её жмёшь, обработчик события onclick не видит "свою" функцию - появляется ошибка - PosilkaFlotika is not defined.

Эту функцию везде перемещал по скрипту. Здесь на сайте прочёл, что функции вида function PosilkaFlotika() { ....} считаются глобальными. Как её сделать видимой для кнопки?

Или по другому: ХТМЛ объект не видит нужную ф-ю из скрипта пользователя. Помогите кто может, уже третий день парюсь...

(function()
{
	var unsafe = window;
	try {unsafe = unsafeWindow} catch (e) {}
	     
	var $ = unsafe.$;
	var session = unsafe.session;

	if ( !$ ) return;				

	try {
	

		function PosilkaFlotika()
       	{
		    sendShips(6, 2, 62, 12, 1, 1);
		    
	    };
				
        var objButton = $('#menuTable li').eq(1).clone(true);
        objButton.find('.menu_icon').html('');
        objButton.find('.menubutton')
            .removeClass('selected')
            .attr('href', '#')
			.attr('onclick', 'PosilkaFlotika(); return false')
			.attr('target', '_self')
            .find('.textlabel').html('Messaga : ');			
        objButton.appendTo('#menuTable');
		
    }
   	catch (e) {}
}) ()

Последний раз редактировалось Игорь Александрович, 03.04.2011 в 22:35.
Ответить с цитированием
  #2 (permalink)  
Старый 03.04.2011, 23:39
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

function foo() {
    alert(true);
}
foo();

(function() {
    function foo(a) {
        alert(a);
    }
    foo(false); //а тут есть
}());

foo(true); //нет такой функции в данной области видимости


Читать тут
Ответить с цитированием
  #3 (permalink)  
Старый 04.04.2011, 18:34
Новичок на форуме
Отправить личное сообщение для Игорь Александрович Посмотреть профиль Найти все сообщения от Игорь Александрович
 
Регистрация: 03.04.2011
Сообщений: 8

function asd() 
{
    .........				
     /*	function PosilkaFlotika()
		{
		    sendShips(6, 2, 62, 12, 1, 1);
		};		
     */
    ..........        
} 
	asd() 
	function PosilkaFlotika()
	{
	   sendShips(6, 2, 62, 12, 1, 1);
	};


Так тоже undefined.

Изначально весь код был рабочим - но когда я завернул sendShips() в функцию PosilkaFlotika() - пошли undefined.

П.С. Все пользовательские скрипты подключены через аддон Greasemonkey, но он работает без проблем, может он влияет?

Последний раз редактировалось Игорь Александрович, 05.04.2011 в 18:10.
Ответить с цитированием
  #4 (permalink)  
Старый 04.04.2011, 18:55
Новичок на форуме
Отправить личное сообщение для Игорь Александрович Посмотреть профиль Найти все сообщения от Игорь Александрович
 
Регистрация: 03.04.2011
Сообщений: 8

Кто знает как добавить в обработчик события onclick прямой путь на ф-ю в скрипте пользователя?
Ответить с цитированием
  #5 (permalink)  
Старый 04.04.2011, 19:34
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

el.onclick = a

function a(){...}
Ответить с цитированием
  #6 (permalink)  
Старый 04.04.2011, 20:36
Новичок на форуме
Отправить личное сообщение для Игорь Александрович Посмотреть профиль Найти все сообщения от Игорь Александрович
 
Регистрация: 03.04.2011
Сообщений: 8

А с прямым путем к файлу как?
Ответить с цитированием
  #7 (permalink)  
Старый 05.04.2011, 03:20
Новичок на форуме
Отправить личное сообщение для Игорь Александрович Посмотреть профиль Найти все сообщения от Игорь Александрович
 
Регистрация: 03.04.2011
Сообщений: 8

Опера видит var вне общей функции, но ф-ии не видит.
А ФФ не видит ни того, ни другого...


Да блин....Обезъяны, лисы,...где люди делающие браузеры? Ау.js...

Последний раз редактировалось Игорь Александрович, 05.04.2011 в 03:22.
Ответить с цитированием
  #8 (permalink)  
Старый 05.04.2011, 08:42
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Сообщение от Игорь Александрович
Да блин....Обезъяны, лисы,...где люди делающие браузеры? Ау.js...
если у вас что-то не получается не нужно искать виноватых:

function foo() {
    alert(true);
}

function bar() {
    foo();
}

bar();

function bar(foo) {
    foo();
}

bar(function(a) {
    alert(true);
});

function foo() {
    alert(true);
}

function bar() {
    return function() {
        return function() {
            foo();
        }  
    } 
}

bar()()();

Последний раз редактировалось monolithed, 05.04.2011 в 08:47.
Ответить с цитированием
  #9 (permalink)  
Старый 05.04.2011, 21:15
Новичок на форуме
Отправить личное сообщение для Игорь Александрович Посмотреть профиль Найти все сообщения от Игорь Александрович
 
Регистрация: 03.04.2011
Сообщений: 8

Нашёл инфо - "А Greasemonkey принудительно заворачивает весь код в функцию:
(function() { некий_код; })()."

Поэтому и блин! Кодер думает, что скрипт его просто подключен, а он ещё и обёрнут!

bar()()() - это не понятно, если коротко что это?

Последний раз редактировалось Игорь Александрович, 05.04.2011 в 21:20.
Ответить с цитированием
  #10 (permalink)  
Старый 05.04.2011, 21:26
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от Игорь Александрович Посмотреть сообщение
bar()()() - это не понятно, если коротко что это?
это замыкания ( колоши, клошуры)

javascript.ru/basic/closure

одним словом, это ах***но !!!
Ответить с цитированием
Ответ



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

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