Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.12.2016, 17:30   #1
maks1331
Форумчанин
 
Аватар для maks1331
 
Регистрация: 20.12.2016
Сообщений: 270
По умолчанию Два скрипта не работают вместе

Приветствую всех форумчан! Первый раз имею дело с языком javascript на своём сайте. Вставил два готовых скрипта, один на падающие снежинки, другой на слайдер. Так вот, по отдельности - работают как часы. Ставлю же их вместе - работает тот, который написан ниже. В чём может быть проблема? Могу оба кода скинуть, если это необходимо.
формошлеп.рф
witech.su
maks1331 вне форума Ответить с цитированием
Старый 20.12.2016, 17:41   #2
Naive
Раздолбайских Дел
Старожил
 
Аватар для Naive
 
Регистрация: 22.05.2009
Сообщений: 3,828
По умолчанию

Скорей всего в глобальных переменных, заверни каждый свое замыкание:
Код:
(function(){
  //тут код скрипта 1
})();
(function(){
  //тут код скрипта 2
})();
Alar, верни репу!
Naive вне форума Ответить с цитированием
Старый 20.12.2016, 18:40   #3
maks1331
Форумчанин
 
Аватар для maks1331
 
Регистрация: 20.12.2016
Сообщений: 270
По умолчанию

Эммм, я понял что ты имеешь в виду, но не совсем понял как это реализовать на моём примере.

1 скрипт:
Код HTML:
<script type="text/javascript">
		function myss(ssid,width,height,pause)
  		{
  			var ss = document.getElementById(ssid);
  			var dspwidth=750;
  			var dspheight=150;
			var imgcount=ss.children[0].getElementsByTagName('img').length;
  			ss.style.width=dspwidth+'px';
  			ss.style.height=dspheight+'px';
  			ss.children[0].style.width=(imgcount*dspwidth)+'px';
  			ss.children[0].style.height=dspheight+'px';
  			ss.children[0].style.left='0px';  
  
  			iid=window.setInterval(function()
    			{
    				var minleft=-1*(dspwidth*(imgcount-1));
    				if(minleft>=parseInt(ss.children[0].style.left))
      				{
      					ss.children[0].style.left='0px';
      				}else
      				{
      					ss.children[0].style.left=(parseInt(ss.children[0].style.left)-750)+'px';
      				}
    			}, pause);
  		}

		window.onload = function(e)
  		{
  			myss('ss1',900,300,6000);
  		}
	</script>
2 скрипт
Код HTML:
<SCRIPT type="text/javascript">
		var snowmax=100; <!-- кол-во -->
		var snowcolor=new Array("#AAAACC","#DDDDFF","#CCCCDD","#F3F3F3","#F0FFFF","#FFFFFF","#EFF5FF"); <!-- цвета, склько угодно -->
		var snowtype=new Array("Arial Black","Arial Narrow","Times","Comic Sans MS"); <!-- шрифты, сколько угодно -->
		var snowletter="*"; <!-- символ снежинки -->
		var sinkspeed=0.6; <!-- скорость падения -->
		var snowmaxsize=22; <!-- max размер -->
		var snowminsize=8; <!-- min размер -->
		var snowingzone=1; <!-- положение снега (1-по всему сайту, 2-слева, 3-по центру, 4-справа) -->
		<!-- дальше не менять -->
		var snow=new Array();
		var marginbottom;
		var marginright;
		var timer;
		var i_snow=0;
		var x_mv=new Array();
		var crds=new Array();
		var lftrght=new Array();
		var browserinfos=navigator.userAgent;
		var ie5=document.all&&document.getElementById&&!browserinfos.match(/Opera/);
		var ns6=document.getElementById&&!document.all;
		var opera=browserinfos.match(/Opera/);
		var browserok=ie5||ns6||opera;
		function randommaker(range) {
			rand=Math.floor(range*Math.random());
			return rand;
		}
		function initsnow() {
			if (ie5 || opera) {
				marginbottom=document.body.clientHeight;
				marginright=document.body.clientWidth;
			}
			else if (ns6) {
			marginbottom=document.body.clientHeight;
			marginright=document.body.clientWidth;
			}
			var snowsizerange=snowmaxsize-snowminsize;
			for (i=0;i<=snowmax;i++) {
				crds[i]=0;
				lftrght[i]=Math.random()*15;
				x_mv[i]=0.03+Math.random()/10;
				snow[i]=document.getElementById("s"+i);
				snow[i].style.fontFamily=snowtype[randommaker(snowtype/length)];
				snow[i].size=randommaker(snowsizerange)+snowminsize;
				snow[i].style.fontSize=snow[i].size+"px";
				snow[i].style.color=snowcolor[randommaker(snowcolor.length)];
				snow[i].sink=sinkspeed*snow[i].size/5;
				if (snowingzone==1) {snow[i].posx=randommaker(marginright-snow[i].size)}
				if (snowingzone==2) {snow[i].posx=randommaker(marginright/2-snow[i].size)}
				if (snowingzone==3) {snow[i].posx=randommaker(marginright/2-snow[i].size)+marginright/4}
				if (snowingzone==4) {snow[i].posx=randommaker(marginright/2-snow[i].size)+marginright/2}
				snow[i].posy=randommaker(2*marginbottom-marginbottom-2*snow[i].size);
				snow[i].style.left=snow[i].posx+"px";
				snow[i].style.top=snow[i].posy+"px";
			}
			movesnow();
		}
		function movesnow() {
			for(i=0;i<=snowmax;i++) {
				crds[i]+=x_mv[i];
				snow[i].posy+=snow[i].sink;
				snow[i].style.left=snow[i].posx+lftrght[i]*Math.sin(crds[i])+"px";
				snow[i].style.top=snow[i].posy+"px";
				if (snow[i].posy>=marginbottom-2*snow[i].size || parseInt(snow[i].style.left)>(marginright-3*lftrght[i])) {
					if (snowingzone==1) {snow[i].posx=randommaker(marginright-snow[i].size)}
					if (snowingzone==2) {snow[i].posx=randommaker(marginright/2-snow[i].size)}
					if (snowingzone==3) {snow[i].posx=randommaker(marginright/2-snow[i].size)+marginright/4}
					if (snowingzone==4) {snow[i].posx=randommaker(marginright/2-snow[i].size)+marginright/2}
					snow[i].posy=0;
				}
			}
			var timer=setTimeout("movesnow()",50);
		}		
		for (i=0;i<=snowmax;i++) {
			document.write("<span id='s"+i+"' style='position:absolute;top:-"+snowmaxsize+"px;'>"+snowletter+"</span>");
		}
		if (browserok) {
			window.onload=initsnow;
		}
		</SCRIPT>
формошлеп.рф
witech.su
maks1331 вне форума Ответить с цитированием
Старый 20.12.2016, 21:18   #4
Naive
Раздолбайских Дел
Старожил
 
Аватар для Naive
 
Регистрация: 22.05.2009
Сообщений: 3,828
По умолчанию

Не, не в этом дело...
Код:
window.onload
перезаписывается.
Его надо переписать в обоих случаях на addEventListener (тут подробно).
или простой вариант, оба скрипта вставить в самый конец документа и напрямую вызвать соответствующие функции:
вместо
Код:
		if (browserok) {
			window.onload=initsnow;
		}
написать
Код:
if (browserok) {
  initsnow();
};
а вместо
Код:
  		window.onload = function(e)
  		{
  			myss('ss1',900,300,6000);
  		}
написать
Код:
myss('ss1',900,300,6000);
p.s. Честно говоря, я бы оба этих скрипта выкинул на свалку, как минимум из-за этого косяка.
Alar, верни репу!
Naive вне форума Ответить с цитированием
Старый 20.12.2016, 21:29   #5
maks1331
Форумчанин
 
Аватар для maks1331
 
Регистрация: 20.12.2016
Сообщений: 270
По умолчанию

Выбросить... Не практично, сам я замену этим кодам буду писать не мало времени. Оптимизировать под совместную работу - мой путь)

Попробую решить твоим способом, отпишусь в теме о результатах
формошлеп.рф
witech.su
maks1331 вне форума Ответить с цитированием
Старый 20.12.2016, 21:34   #6
maks1331
Форумчанин
 
Аватар для maks1331
 
Регистрация: 20.12.2016
Сообщений: 270
По умолчанию

Сделал соответствующие замены (по второму пути), снежинки как бешенные побежали поверху страницы, слайдер - стоит.

Попробую первый метод
_________________________
Это будет долго
_________________________
Ты сказал что перезаписывается window.onload, по твоему методу я не справился, но подумал, что можно заменить его как то иначе.
В общем, в первом скрипте
Код HTML:
window.onload = function(e)
заменил на
Код HTML:
document.ready = function(e)
теперь оба скрипта работают, что не может не радовать! Вопрос лишь один, достойная ли это замена и не сулит ли она чем либо?
_________________________
Почитал ещё немного, подумал, что нужно в первом и втором скрипте эти строчки поменять, так как снегу не важна загрузка изображений, а вот слайдеру очень даже, верно?
формошлеп.рф
witech.su

Последний раз редактировалось maks1331; 20.12.2016 в 22:18. Причина: ой ёй ёй 2
maks1331 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ОЗУ: модули не работают вместе Larboss Компьютерное железо 13 12.11.2014 18:50
вместе параметры не работают ГОСЕАН Помощь студентам 9 09.11.2011 11:26
Не работают два скрипта одновременно veec JavaScript, Ajax 1 03.11.2011 22:41
Не работают вместе.. Лия92 Помощь студентам 0 13.12.2010 20:23
Не работают одновременно два скрипта MrJenika JavaScript, Ajax 0 17.04.2010 12:35