Форум программистов
 
Расширенный поиск
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > Javascript, Ajax и другие клиентские скрипты
Регистрация

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



Ответ
 
Опции темы
Старый 20.12.2016, 18:30   #1
maks1331
Пользователь
 
Регистрация: 20.12.2016
Сообщений: 37
Репутация: 10
По умолчанию Два скрипта не работают вместе

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

Скорей всего в глобальных переменных, заверни каждый свое замыкание:
Код:

(function(){
  //тут код скрипта 1
})();
(function(){
  //тут код скрипта 2
})();

__________________
ridero.ru — издай свою книгу по-человечески
Жду ваши искренние спасибы на яндекс-кошелек: 410011068154587
Naive вне форума   Ответить с цитированием
Старый 20.12.2016, 19:40   #3
maks1331
Пользователь
 
Регистрация: 20.12.2016
Сообщений: 37
Репутация: 10
По умолчанию

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

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>
maks1331 вне форума   Ответить с цитированием
Старый 20.12.2016, 22:18   #4
Naive
Раздолбайских Дел
Профессионал
 
Аватар для Naive
 
Регистрация: 22.05.2009
Адрес: Екатеринбург
Сообщений: 3,441
Репутация: 1747
По умолчанию

Не, не в этом дело...
Код:

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. Честно говоря, я бы оба этих скрипта выкинул на свалку, как минимум из-за этого косяка.
__________________
ridero.ru — издай свою книгу по-человечески
Жду ваши искренние спасибы на яндекс-кошелек: 410011068154587
Naive вне форума   Ответить с цитированием
Старый 20.12.2016, 22:29   #5
maks1331
Пользователь
 
Регистрация: 20.12.2016
Сообщений: 37
Репутация: 10
По умолчанию

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

Попробую решить твоим способом, отпишусь в теме о результатах
maks1331 вне форума   Ответить с цитированием
Старый 20.12.2016, 22:34   #6
maks1331
Пользователь
 
Регистрация: 20.12.2016
Сообщений: 37
Репутация: 10
По умолчанию

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

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

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



Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

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




04:57.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

Покупайте на сайте www.skinon.ru уникальные чехлы и наклейки для телефонов.
купить трафик


как улучшить посещаемость, а также решения по монетизации сайтов, видео и приложений

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru