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); Судя по всему проблема опять с замыканием... Подскажите пожалуйста как ее решить, т.к. по примерам статьи ничего не понятно... |
Функция setQueue объявлена внутри замыкания? Если да, то надо добавить
window.setQueue = setQueue; |
Замыкание возникает внутри цикла?
Если да, то она вне замыкания... Просто при вызове этой функции (на ссылку жму), в консоли пишется что функция не объявлена... |
Функция и ее вызов находятся в одной области видимости...
Я имею ввиду что ни цикл, ни функция не находятся внутри другой функции... |
Помогло unsafeWindow.setQueue = setQueue;
Цитата:
Существуют-ли другие способы решения этой проблемы? |
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\">";
|
Цитата:
|
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);
|
KamaZz,
за вас тут ещё и синтаксические ошибки разбирать? Учебник почитайте, чтобы бред не писать. |
Прошу прощение, действительно глупость написал :)
Но замыкание не срабатывает... Зато ошибок уже не выдаёт... Укажите пожалуйста, где я еще обшибся?
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');
}
|
| Часовой пояс GMT +3, время: 13:12. |