Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 26.09.2010, 17:47
Аспирант
Отправить личное сообщение для KamaZz Посмотреть профиль Найти все сообщения от KamaZz
 
Регистрация: 22.06.2010
Сообщений: 47

if (page) {
	var buttons = document.getElementById("buttonz");
	for (i = 0; i < page.length; i++) {
		try {
			buildings = buttons.getElementsByClassName(buildId + page[i][0]);
			buildings[0].firstChild.nextSibling.innerHTML += "<a href=\"javascript: setQueue('" + pagename + "', " + page[i][0] + ");\" title=\"|Поставить в очередь на постройку\" class=\"fastBuild tipsStandard feldwebel\"><img width=\"22\" height=\"14\" src=\"img/layout/pixel.gif\"><img width=\"22\" height=\"14\" src=\"img/layout/pixel.gif\"></a>";
		} catch (e) {
			GM_log(e.message);
		}
	}
}

function setQueue(pagename, id) {
	GM_setValue('build', new Array(id, pagename));
	alert(GM_getValue('build'));
}


В консоли выдает:
Error: setQueue is not defined
javascript: setQueue('station', 14);

Судя по всему проблема опять с замыканием... Подскажите пожалуйста как ее решить, т.к. по примерам статьи ничего не понятно...
Ответить с цитированием
  #12 (permalink)  
Старый 26.09.2010, 17:52
Профессор
Отправить личное сообщение для exec Посмотреть профиль Найти все сообщения от exec
 
Регистрация: 21.01.2010
Сообщений: 1,022

Функция setQueue объявлена внутри замыкания? Если да, то надо добавить

window.setQueue = setQueue;
Ответить с цитированием
  #13 (permalink)  
Старый 26.09.2010, 19:50
Аспирант
Отправить личное сообщение для KamaZz Посмотреть профиль Найти все сообщения от KamaZz
 
Регистрация: 22.06.2010
Сообщений: 47

Замыкание возникает внутри цикла?
Если да, то она вне замыкания... Просто при вызове этой функции (на ссылку жму), в консоли пишется что функция не объявлена...
Ответить с цитированием
  #14 (permalink)  
Старый 27.09.2010, 12:25
Аспирант
Отправить личное сообщение для KamaZz Посмотреть профиль Найти все сообщения от KamaZz
 
Регистрация: 22.06.2010
Сообщений: 47

Функция и ее вызов находятся в одной области видимости...
Я имею ввиду что ни цикл, ни функция не находятся внутри другой функции...
Ответить с цитированием
  #15 (permalink)  
Старый 27.09.2010, 15:49
Аспирант
Отправить личное сообщение для KamaZz Посмотреть профиль Найти все сообщения от KamaZz
 
Регистрация: 22.06.2010
Сообщений: 47

Помогло unsafeWindow.setQueue = setQueue;
Цитата:
Error: Greasemonkey access violation: unsafeWindow cannot call GM_setValue.
Но при использовании unsafeWindow, GreaseMonkey не даёт мне пользоваться функциями GM'a... Такими как GM_setValue, etc...
Существуют-ли другие способы решения этой проблемы?

Последний раз редактировалось KamaZz, 28.09.2010 в 13:40.
Ответить с цитированием
  #16 (permalink)  
Старый 28.09.2010, 13:36
Аспирант
Отправить личное сообщение для KamaZz Посмотреть профиль Найти все сообщения от KamaZz
 
Регистрация: 22.06.2010
Сообщений: 47

Error: missing formal parameter
Line: 1, Column: 10
Source Code:
(function('station', 21) { return function() { setQueue('station', 21); } })(1);
"<a href=\"#\" onclick=\"(function('" + pagename + "', " + page[i][0] + ") { return function() { setQueue('" + pagename + "', " + page[i][0] + "); } })(" + i + ");\" class=\"fastBuild\">";

Последний раз редактировалось KamaZz, 28.09.2010 в 14:11.
Ответить с цитированием
  #17 (permalink)  
Старый 28.09.2010, 13:38
Профессор
Отправить личное сообщение для exec Посмотреть профиль Найти все сообщения от exec
 
Регистрация: 21.01.2010
Сообщений: 1,022

Цитата:
(function('station', 21) {
В аргументах функции должны быть только их названия, а не строки и числа.
Ответить с цитированием
  #18 (permalink)  
Старый 28.09.2010, 14:07
Аспирант
Отправить личное сообщение для KamaZz Посмотреть профиль Найти все сообщения от KamaZz
 
Регистрация: 22.06.2010
Сообщений: 47

Error: missing ) after formal parameters (указатель показывает на квадратную скобку)
(function(pagename, page[i][0]) { return function() { setQueue('station', 14); } })(0);

Error: missing formal parameter (указатель показывает на одинарную кавычку)
(function('pagename', page[i][0]) { return function() { setQueue('station', 14); } })(0);
Ответить с цитированием
  #19 (permalink)  
Старый 28.09.2010, 14:09
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

KamaZz,
за вас тут ещё и синтаксические ошибки разбирать? Учебник почитайте, чтобы бред не писать.
Ответить с цитированием
  #20 (permalink)  
Старый 28.09.2010, 14:38
Аспирант
Отправить личное сообщение для KamaZz Посмотреть профиль Найти все сообщения от KamaZz
 
Регистрация: 22.06.2010
Сообщений: 47

Прошу прощение, действительно глупость написал
Но замыкание не срабатывает... Зато ошибок уже не выдаёт...
Укажите пожалуйста, где я еще обшибся?

if (page) {
	var buttons = document.getElementById("buttonz");
	for (i = 0; i < page.length; i++) {
		try {
			buildings = buttons
					.getElementsByClassName(buildId + page[i][0]);
			buildings[0].firstChild.nextSibling.innerHTML += "<a href=\"#\" onclick=\"(function(pagename, page) { return function() { setQueue('" + pagename + "', " + page[i][0] + "); } })(" + i + ");\" class=\"fastBuild\"><img width=\"22\" height=\"14\" src=\"img/layout/pixel.gif\"></a>";
		} catch (e) {
			GM_log(e.message + "\nOccurred in function \"turnButtons\"");
		}
	}
}

//setQueue('sadasd', 1212);

function setQueue(pagename, id) {
	/*
	 * var array = new Array(id, pagename); GM_setValue('build', array);
	 * alert(GM_getValue('build'));
	 */
	alert('test');
}

Последний раз редактировалось KamaZz, 28.09.2010 в 18:48.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
$('my').load(); Как сделать, чтобы это заработало mycoding Общие вопросы Javascript 25 02.10.2016 23:43
CComponent - кроссбраузерные компоненты tenshi Ваши сайты и скрипты 5 20.04.2010 23:22
Свойства посредством полиморфных функций tenshi Ваши сайты и скрипты 0 18.03.2010 17:12
хитросплетения Global,контекст,this,Reference kefi Общие вопросы Javascript 109 20.11.2009 23:34
Ошибка скрипта меню в IE Mortymer Элементы интерфейса 1 03.04.2009 03:58