Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 23.12.2011, 19:09
Профессор
Отправить личное сообщение для (Sandr) Посмотреть профиль Найти все сообщения от (Sandr)
 
Регистрация: 14.10.2010
Сообщений: 376

Прокрутка; Изменение координат картинки
Всем привет)
Прошу подсказать по 2м вопросам.
1.
Что не так в коде ниже? Он работает во всех браузерах кроме ФФ.
<html>
	<head>
		<title>Аллоха!</title>
	</head>
	<script>
	var amount=4;
	var ypos=0;
	var xpos=0;
	ang1step=new Array();
	ang1=new Array();
	ang2step=new Array();
	ang2=new Array();
	radius=new Array();
	wdt=new Array();

	for (i=0; i < amount; i++){
	  document.write('<div id="planet'+i+'" style="position:absolute;top:0px;left:0px;');
	  document.write('width:32px;height:32px;font-size:2px;"><img src="fly.gif"></div>');

	  ang1step[i]=Math.random()*0.15+0.1;
	  ang1[i]=i;
	  ang2[i]=i;
	  ang2step[i]=Math.random()*0.05+0.005;
	  radius[i]=Math.random()*50+50;
	  wdt[i]=Math.random()*5+5;
	}

	function iMouse(){
	  ypos=event.y+document.body.scrollTop;
	  xpos=event.x+document.body.scrollLeft;
	}
	document.onmousemove = iMouse;

	function flash(){
	  for (i=0; i < amount; i++){
		ang1[i]+=ang1step[i];
		ang2[i]+=ang2step[i];
		var y1=radius[i]*Math.sin(ang1[i])/wdt[i];
		var x1=radius[i]*Math.cos(ang1[i]);
		eval('document.all["planet'+i+'"].style.top=ypos+x1*Math.sin(ang2[i])+y1*Math.cos(ang2[i]);');
		eval('document.all["planet'+i+'"].style.left=xpos+x1*Math.cos(ang2[i])-y1*Math.sin(ang2[i]);');
		if(ang1[i]>6.28){ang1[i]-=6.28;};
		if(ang2[i]>6.28){ang1[i]-=6.28;};
		}
	  setTimeout(flash,50);
	}
	window.onload=flash;
	</script>
	<body>
	
	</body>
</html>




2.
Пытаюсь написать прокрутку новостного блока. Всё сделал, но возникает проблема с тем, что когда блок прокручивается до конца нужно как-то осуществить показ новостей заново. Т.е. чтобы они крутились без остановки. Подскажите, как это лучше осуществить? Конечно, можно быстро перематывать див к первой новости, но мне почему-то не нравится этот вариант.
Ответить с цитированием
  #2 (permalink)  
Старый 23.12.2011, 20:16
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Сообщение от (Sandr)
Что не так в коде ниже? Он работает во всех браузерах кроме ФФ.
Могу предположить, что причина здесь, но не уверен. Посмотрите в отладчике FF, есть ли такие св-ва
ypos=event.y+document.body.scrollTop;
xpos=event.x+document.body.scrollLeft;
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #3 (permalink)  
Старый 23.12.2011, 22:08
Профессор
Отправить личное сообщение для (Sandr) Посмотреть профиль Найти все сообщения от (Sandr)
 
Регистрация: 14.10.2010
Сообщений: 376

nerv_,
посмотрел. Да, действительно так. Но не понемаю почему..
Ответить с цитированием
  #4 (permalink)  
Старый 23.12.2011, 22:32
Профессор
Отправить личное сообщение для (Sandr) Посмотреть профиль Найти все сообщения от (Sandr)
 
Регистрация: 14.10.2010
Сообщений: 376

Чтобы не плодить лишних тем задам в этой ещё один вопрос. Есть строка примерного содержания: "буквы1+цифры1,буквы2+цифр 2, буквы3+цифры3", эту строку нужно превратить в массив вида ['буквы1+цифры1','буквы2+цифры2 ','буквы3+цифры3']

К примеру было: var m = 'qw1,er2,ty3';
А стало: m = ['qw1','er2','ty3'];
Ответить с цитированием
  #5 (permalink)  
Старый 23.12.2011, 22:54
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 12,184

Сообщение от (Sandr)
было: var m = 'qw1,er2,ty3';
А стало: m = ['qw1','er2','ty3'];
таки есть метод
http://javascript.ru/String/split
Ответить с цитированием
  #6 (permalink)  
Старый 23.12.2011, 23:31
Профессор
Отправить личное сообщение для (Sandr) Посмотреть профиль Найти все сообщения от (Sandr)
 
Регистрация: 14.10.2010
Сообщений: 376

ksa,
да я вот пробую с помощью него, но не получается. По этому, думал, какой-то другой вариант есть.
Ответить с цитированием
  #7 (permalink)  
Старый 23.12.2011, 23:33
Профессор
Отправить личное сообщение для (Sandr) Посмотреть профиль Найти все сообщения от (Sandr)
 
Регистрация: 14.10.2010
Сообщений: 376

Аа.. всё, работает split()
Ответить с цитированием
  #8 (permalink)  
Старый 24.12.2011, 13:37
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 25,443

(Sandr),
Поищите разницу в скриптах ... или рабочий вариант для всех браузеров ...

<html>
	<head>
		<title>Аллоха!</title>
	</head>
	<script>
	var amount=4;
	var ypos=0;
	var xpos=0;
	ang1step=new Array();
	ang1=new Array();
	ang2step=new Array();
	ang2=new Array();
	radius=new Array();
	wdt=new Array();

	for (i=0; i < amount; i++){
	  document.write('<div id="planet'+i+'" style="position:absolute;top:0px;left:0px;');
	  document.write('width:32px;height:32px;font-size:2px;"><img src="http://www.artgif.ru/ZVEZDY/star048.gif"></div>');
      ang1step[i]=Math.random()*0.15+0.1;
	  ang1[i]=i;
	  ang2[i]=i;
	  ang2step[i]=Math.random()*0.05+0.005;
	  radius[i]=Math.random()*50+50;
	  wdt[i]=Math.random()*5+5;
	}


function iMouse(e) {
  e = e || window.event
 if (e.pageX == null && e.clientX != null) {
    var html = document.documentElement
    var body = document.body
    e.pageX = e.clientX + (html && html.scrollLeft || body && body.scrollLeft || 0) - (html.clientLeft || 0)
    e.pageY = e.clientY + (html && html.scrollTop || body && body.scrollTop || 0) - (html.clientTop || 0)
  }
 ypos = e.pageY
 xpos = e.pageX
}

    document.onmousemove = iMouse;

	function flash(){
	  for (i=0; i < amount; i++){
		ang1[i]+=ang1step[i];
		ang2[i]+=ang2step[i];
		var y1=radius[i]*Math.sin(ang1[i])/wdt[i];
		var x1=radius[i]*Math.cos(ang1[i]);
        document.getElementById("planet"+i).style.top=ypos+x1*Math.sin(ang2[i])+y1*Math.cos(ang2[i])+"px";
        document.getElementById("planet"+i).style.left=xpos+x1*Math.cos(ang2[i])-y1*Math.sin(ang2[i])+"px";
        if(ang1[i]>6.28){ang1[i]-=6.28;};
		if(ang2[i]>6.28){ang1[i]-=6.28;};
		}
	  setTimeout(flash,50);
	}
	window.onload=flash;
	</script>
	<body>

	</body>
</html>
Ответить с цитированием
  #9 (permalink)  
Старый 25.12.2011, 09:35
Профессор
Отправить личное сообщение для (Sandr) Посмотреть профиль Найти все сообщения от (Sandr)
 
Регистрация: 14.10.2010
Сообщений: 376

рони,
спасибо)
Ответить с цитированием
  #10 (permalink)  
Старый 26.12.2011, 09:01
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от (Sandr) Посмотреть сообщение
nerv_,
посмотрел. Да, действительно так. Но не понемаю почему..
смотри, что я нашёл

ЗЫ поздновато ответил, каюсь
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменение адреса картинки с radio magahed Элементы интерфейса 2 04.11.2011 14:41
Изменение размеров картинки через скрипт SLV Общие вопросы Javascript 4 27.12.2010 11:40
Динамическое изменение размеров фоновой картинки ячейки shaitan Элементы интерфейса 4 15.04.2010 13:30
Получение координат от картинки EmDmAl Events/DOM/Window 4 08.11.2009 14:34
Изменение размеров картинки Vladimir Mashkov Элементы интерфейса 2 16.10.2009 16:37