Javascript.RU

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

Нужна помощь в адаптации скрипта под FireFox
Нужна помощь в доработке скрипта под FireFox, скрипт формирует HTML код с тегами IMG на случайные ресурсы изображений расположенных в каталоге imgh, HTML код формируется для элемента imgcontainer:
<span id="imgcontainer"><script>initiate()</script></span>

полный код скрипта:
var imgwidth=150
var imgheight=120
//количество отображаемых картинок
var imgview=3 
//количество фотографий в каталоге ресурсов
var imgcount=52
var pos_left=10
var pos_top=10
var cliptop=0
var clipbottom=imgheight
var clipleft=0
var clipright=imgwidth
//массив хранения ссылок на большое фото
var imgurl=new Array
//массив хранения ссылок на маленькое отображаемое фото
var imgname=new Array
//массив случайных чисел - нужен для формирования пути вида "[путь к каталогу ресурсов]\[случаное число].jpg
var rand=new Array
var rep=0

// функция исключающая повторение значений в массиве rand
function notrepeat(len,el){
	rep=0
	var j=0
	while (j<=len) {
		if(el==rand[j]){rep++}	
		//alert(el+" "+rand[j]+" "+rep)
		j++
	}
}

//формируем массив rand
for (i=0;i<=imgview-1;i++) {
	do{
		var randnum = Math.random();
                //формируем i элемент массива rand в диапазоне от 1 до imgcount 
		rand[i]=Math.round((imgcount - 1) * randnum) + 1
                //осуществляем проверку на уникальность i элемента
		notrepeat(i-1,rand[i])
		//alert(rep)
        //если i элемент не уникален(rep-глобальная переменная что задается в функции notrepeat), то заново проходим цикл, понимаю, что это очень не красиво, но это все на что хватило моих познаний в javascript для формирования массива случайных чисел без повторяющихся значений
	}while(rep>0);
}

//формирование путей
for (i=0;i<=imgview-1;i++) {
	imgname[i]="imgh/"+rand[i]+"s.jpg"
	imgurl[i]="imgh/"+rand[i]+".jpg"
}

function imgpreloder(){
	var imgpreload=new Array()
	for (i=0;i<=imgview-1;i++) {
		imgpreload[i]=new Image()
		imgpreload[i].src=imgname[i];
	}
}

function putimagesIE() {
	var str=""
	for(i=0;i<=imgview-1;i++) {
		str=str+"<a href='"+imgurl[i]+"' target='_blank'><img width='"+imgwidth+"' height='"+imgheight+"' src='"+imgname[i]+"' border='0'></a><br>"
	}
	imgcontainer.innerHTML=str
}

function putimagesNN() {
	for(i=0;i<=imgview-1;i++) {
		document.imgcontainer.document.write("<a href='"+imgurl[i]+"' target='_blank'><img width='"+imgwidth+"' height='"+imgheight+"' src='"+imgname[i]+"' border='0'></a><br>");
	}
	document.imgcontainer.document.close()
}

function initiate() {
	if (document.all) {
		document.all.imgcontainer.style.posLeft=pos_left
		document.all.imgcontainer.style.posTop=pos_top
		document.all.imgcontainer.style.clip="rect("+cliptop+" "+clipright+" "+clipbottom+" "+clipleft+")"
		putimagesIE()
	}
	if (document.layers) {
		document.imgcontainer.left=pos_left
		document.imgcontainer.top=pos_top
		document.imgcontainer.clip.left=clipleft
		document.imgcontainer.clip.right=clipright
		document.imgcontainer.clip.top=cliptop
		document.imgcontainer.clip.bottom=clipbottom
		putimagesNN()
	}
}

к сожалению данный скрипт отрабатывает как надо только в IE и Opera, но ни как не в FireFox.
Поскольку в javascript я полный ламер, я был бы рад выслушать всю критику написанного мной скрипта, особенно советы по улучшению.
Заранее большое спасибо.

Последний раз редактировалось Cawa, 22.12.2010 в 20:56.
Ответить с цитированием
  #2 (permalink)  
Старый 23.12.2010, 06:52
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

1) забудь про netscape
2) не пытайся выснить, в каком браузере выполняется код
3) используй document.getElementById вместо доступа к элементам через глобальные переменные
4) для отображения случайных картинок можешь использовать, например, shuffle
5) зачем тебе posLeft, clip?
6) выноси атрибуты, касающиеся оформления в css-файл, за исключением динамических, естественно
Ответить с цитированием
  #3 (permalink)  
Старый 25.12.2010, 16:09
Новичок на форуме
Отправить личное сообщение для Cawa Посмотреть профиль Найти все сообщения от Cawa
 
Регистрация: 22.12.2010
Сообщений: 2

Еще раз спасибо за все, советы помогли, совместимость с FireFox достигнута.
function initiate() {
	var elem = document.getElementById('imgcontainer');
	var str=""
	for(i=0;i<=imgview-1;i++) {
		str = str + "<a href='"+imgurl[i]+"' target='_blank'><img width='"+imgwidth+"' height='"+imgheight+"' src='"+imgname[i]+"' border='0'></a><br>"
	}
	elem.innerHTML=str
}
Ответить с цитированием
  #4 (permalink)  
Старый 25.12.2010, 16:27
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

напиши в css
img {
    border: none;
}

и не пиши border='0' в html
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
нужна помощь в JavaScript михаил Общие вопросы Javascript 26 30.10.2013 12:07
Нужна помощь, если можно Fox-WNT Общие вопросы Javascript 3 27.07.2010 11:38
Очень нужна помощь с Ext JS dcbal ExtJS 1 09.07.2010 13:15
нужна помощь dominosoko Серверные языки и технологии 4 14.03.2010 02:17
Нужна помощь в завершении скрипта - если конечно не трудно. Rush Общие вопросы Javascript 11 18.10.2008 15:06