Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Галерея на Jquery (https://javascript.ru/forum/jquery/24852-galereya-na-jquery.html)

Daniil94 16.01.2012 19:58

Галерея на Jquery
 
Гуру JS помогите решить проблему с google chrome.
Написал скрипт галереи. Он замечательно работает в opera & firefox.Z
На php из БД формирую такой код:
<script type="text/javascript">
id = new Array(); name = new Array();
id[0]=67; name[0]="5.jpg"; 
id[1]=65; name[1]="4.jpg"; 
id[2]=64; name[2]="3.jpg"; 
id[3]=63; name[3]="2.jpg"; 
id[4]=62; name[4]="1.JPG"; 
</script>

Потом по событию Jquery
$(window).bind('hashchange', function()...

Выполняю функцию
function watch ()
{
var loc=window.location.hash.replace('#', '');
for (i=0; i<=id.length-1; i++)
				 {
				 if (id[i]==loc) 
					{
					$('#pic').attr('src','http://yakulibin.ru/gallery/img/'+name[i]);
					$('#upload').attr('href','http://yakulibin.ru/gallery/img/'+name[i]);
					n=i+1; b=i-1;
					if (n>id.length-1) var n=0;
					if(b<0) b=id.length-1;
					$('#back').attr('href','#'+id[b]); $('.next').attr('href','#'+id[n]);
					break;
					}
				 }

В google chrome картинка не отображается.
P.S. ссылка на галерею и на galerry.js
Через firebug понял только что массив name обнуляется. Думаю что то не так с объявлением переменных либо с переменными функций.
Опытные люди помогите организовать галерею по умному)

Tim 16.01.2012 22:04

> // Загрузил галерею
undefined
test = id;
> [71, 70, 63, 62]
> test = name;
""
> // Опа, пусто
undefined
> // Не проблема, ща объявим
undefined
> name = new Array("5.jpg", "4.jpg", "3.jpg", "2.jpg", "1.jpg");
["5.jpg", "4.jpg", "3.jpg", "2.jpg", "1.jpg"]
> // Опять смотрим
undefined
> test = name;
"5.jpg,4.jpg,3.jpg,2.jpg,1.jpg"
> // Ппц, строка!!!!
undefined
> name = name.split(',');
["5.jpg", "4.jpg", "3.jpg", "2.jpg", "1.jpg"]
> test = name;
"5.jpg,4.jpg,3.jpg,2.jpg,1.jpg"
> // Мля, опять строка!!!
undefined

В браузере при этом ни чего не делаю. Чисто с консолью хрома работаю. Довольно забавный случай. Пока не знаю в чём причина.

Tim 17.01.2012 00:49

думаю где-то конфликт имён. если name объявить как name1 и в функции watch сделать соответствующие поправки, то часть глюков пропадает, т.е через раз начинает срабатывать.

Kolyaj 17.01.2012 08:57

Потому что с глобальными переменными надо аккуратней. А с глобальной переменной name втройне аккуратней.

Daniil94 17.01.2012 10:35

Я тоже думал насчет переменной name, поменял всё равно не пашет. спасибо. Наверно придётся с нуля переписывать.

Kolyaj 17.01.2012 10:53

Вы бы открыли для себя волшебное слово var, очень помогает.

Tim 18.01.2012 01:39

Цитата:

Сообщение от Kolyaj (Сообщение 151010)
Вы бы открыли для себя волшебное слово var, очень помогает.

Daniil94,
кстати, да
Цитата:

for (i=0; i<=id.length-1; i++)
Цитата:

n=i+1; b=i-1;
Внутри функций всегда используйте инструкцию var для объявления переменных, если конечно не хотите чтобы они были глобальными.

Daniil94 19.01.2012 20:22

ок. Но n и b не влияют на массив name

Kolyaj 20.01.2012 00:26

name -- зарезервированная переменная.

Tim 20.01.2012 04:29

Цитата:

Сообщение от Daniil94 (Сообщение 151504)
ок. Но n и b не влияют на массив name

это не повод засорять ими глобальную область видимости. они же за пределами функции вам не нужны


Часовой пояс GMT +3, время: 02:27.