Javascript.RU

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

Ошибка function is not defined
for (var i = 0; i < 14; i++) {
	document.getElementById('details' + fleet[i][0]).setAttribute('onclick', 'check(' + fleet[i][0] + '); return false;');
}

function check(fleet) {
	alert(fleet);
}

При нажатии на ссылку, FireFox выдаёт:
Цитата:
Error: check is not defined

И еще, если я пишу:
var fleetbox = document.getElementById('buttonz');
for (var i = 0; i < 14; i++) {
	fleetbox.getElementById('details' + fleet[i][0]).setAttribute('onclick', 'check(' + fleet[i][0] + '); return false;');
}

Цитата:
Error: fleetbox.getElementById is not a function
Ответить с цитированием
  #2 (permalink)  
Старый 08.09.2010, 16:06
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от KamaZz
Error: check is not defined
Значит нет в глобальной области видимости функции check.

Сообщение от KamaZz
Error: fleetbox.getElementById is not a function
getElementById есть только у документа, т.к. id должен быть уникальным для всего документа.
Ответить с цитированием
  #3 (permalink)  
Старый 08.09.2010, 16:07
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

Метод getElementById определен только для объекта document.
Задавать обработчики событий лучше через addEventListener / attachEvent или задавая соответствующее свойство для узла. Тут Вам понадобятся замыкания (хотя можно обойтись без них).
Ответить с цитированием
  #4 (permalink)  
Старый 08.09.2010, 16:42
Аспирант
Отправить личное сообщение для KamaZz Посмотреть профиль Найти все сообщения от KamaZz
 
Регистрация: 22.06.2010
Сообщений: 47

Браузер каким-то образом разделяет пространства имен скриптов сайта и моего скрипта?
Ответить с цитированием
  #5 (permalink)  
Старый 08.09.2010, 16:47
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

А что вы подразумеваете под вашим скриптом?
Ответить с цитированием
  #6 (permalink)  
Старый 08.09.2010, 16:52
Аспирант
Отправить личное сообщение для KamaZz Посмотреть профиль Найти все сообщения от KamaZz
 
Регистрация: 22.06.2010
Сообщений: 47

Это скрипт под GreaseMonkey...
Ответить с цитированием
  #7 (permalink)  
Старый 08.09.2010, 17:12
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

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

Пытался, но судя по всему моих познаний в JavaScript недостаточно...

var fleet = new Array(13);

fleet[0] = new Array( 202, 2000, 2000, 0 );
fleet[1] = new Array( 203, 6000, 6000, 0 );
fleet[2] = new Array( 204, 3000, 1000, 0 );
fleet[3] = new Array( 205, 6000, 4000, 0 );
fleet[4] = new Array( 206, 20000, 7000, 2000 );
fleet[5] = new Array( 207, 45000, 15000, 0 );
fleet[6] = new Array( 208, 10000, 20000, 10000 );
fleet[7] = new Array( 209, 10000, 6000, 2000 );
fleet[8] = new Array( 210, 0, 1000, 0 );
fleet[9] = new Array( 211, 50000, 25000, 15000 );
fleet[10] = new Array( 212, 0, 2000, 500 );
fleet[11] = new Array( 213, 60000, 50000, 15000 );
fleet[12] = new Array( 214, 5000000, 4000000, 1000000 );
fleet[13] = new Array( 215, 30000, 40000, 15000 );

for (var i = 0; i < 14; i++) {
     document.getElementById('details' + fleet[i][0]).addEventListener('click', function() { check(fleet[i][0]) }, false);
}

var check = function(fleet) {
    alert(fleet);
}


В FireFox(GM), выдаёт.
Error: fleet[i] is undefined

В Опере всё работает...
Ответить с цитированием
  #9 (permalink)  
Старый 08.09.2010, 17:27
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

http://javascript.ru/basic/closure#p...-ispolzovaniya
Ответить с цитированием
  #10 (permalink)  
Старый 08.09.2010, 21:08
Аватар для subzey
Пионэр
Отправить личное сообщение для subzey Посмотреть профиль Найти все сообщения от subzey
 
Регистрация: 16.11.2009
Сообщений: 1,322

Сообщение от KamaZz Посмотреть сообщение
Это скрипт под GreaseMonkey...
Да, грязномакаковские скрипты выполняется в отдельной области. Чтобы получить доступ к window самого документа, используйте unsafeWindow
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
$('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