Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   Скрипт меняющихся картинок из внешнего js-файла (https://javascript.ru/forum/css-html/6352-skript-menyayushhikhsya-kartinok-iz-vneshnego-js-fajjla.html)

baskerville 25.11.2009 11:23

Скрипт меняющихся картинок из внешнего js-файла
 
Есть скрипт меняющихся картинок.

<script>
        function RandomNumber(d) {
           return Math.floor((d+1)*Math.random());
        }        
    var images = new Array("img/01.jpg","img/02.jpg","img/03.jpg");

    function RandomGraphics() {
        document.write("<img src='"+images[RandomNumber(images.length-1)]+"' align=center hspace=10></a>");   
    }
RandomGraphics();
</script>


Это прописывание почему-то не даёт эффекта и ничего соответственно не подгружается:

<script type="text/javascript" src="script.js"></script>


Как заставить этот скрипт работать из внешнего js-файла?

baskerville 26.11.2009 14:15

Люди, ну отпишитесь кто-нибудь? Помогите.

Kolyaj 26.11.2009 15:00

Теги script во внешних файлах не нужны.

baskerville 26.11.2009 15:45

Kolyaj, нереальное спасибо. Работает!

GhostWolf 21.12.2009 21:40

У меня похожая тема. Объясните пожалуйста, где баг.

Код:

<HTML>
<HEAD>
<SCRIPT LANGUAGE="JavaScript">

var images=new Array(new image(), new image(), new image(), new image());
images[0].src="0.gif"
images[1].src="1.gif"
images[2].src="2.gif"
images[3].src="3.gif"

function getRandom(min, max)
{
  return Math.floor(Math.random() * (max - min + 1)) + min;
}

function rotate(){
 d0=getRandom(0,3);
 document.i0.src=document.images[d0].src
 do {
  d1=getRandom(0,3);
  document.i1.src=document.images[d1].src
 }while (d0==d1)
 
 do {
  d2=getRandom(0,3);
  document.i2.src=document.images[d2].src
 }while ((d0==d2)||(d1==d2))
 
  do {
  d3=getRandom(0,3);
  document.i3.src=document.images[d3].src
 }while ((d0==d3)||(d1==d3)||(d2==d3))
 
 alert(d0+"  "+d1+"  "+d2+"  "+d3);

}

 </script>
 <p><img name=i0 onclick="rotate()" src="0.gif"><img name=i1 onclick="rotate()" src="1.gif"></p>
 <p><img name=i2 onclick="rotate()" src="2.gif"><img name=i3 onclick="rotate()" src="3.gif"></p>
 <input type="button" value="rotate" onClick="rotate()">
</HEAD>
</HTML>

Генератор работает исправно, но картинки меняются совершенно непредсказуемо. Мне необходимо, чтобы они случайно тасовались, но не повторялись.

PeaceCoder 21.12.2009 22:44

Цитата:

Сообщение от GhostWolf
Мне необходимо, чтобы они случайно тасовались, но не повторялись.

была такая тема. Ссылка

GhostWolf 22.12.2009 08:26

Фишка не в реализации алгоритма. Генератор случайных исправно выдает результаты (о чем сообщает блок Alert) Фишка в том, что картинки назначаются по непонятным мне закономерностям, часто игнорируя результат рандома.
В этом можно убедится, если запустить страницу с 4я разными картинками.

Единственная закономерность, которую я обнаружил при работе лишь с одной картинкой: она меняется на любую, исключая ту, что была в начале. Замена имени, а так же ввод дополнительных картинок к результату не приводят, либо скрипт и вовсе отказывается работать.
Просьба: человек, разбирающийся в JS, найдите баг, пожалуйста. Мне еще туеву хучу лаб делать, а осталась неделя =)

PeaceCoder 22.12.2009 19:31

просто ппц лентяи вы все аж помогать не хочется.
function rotate(){

var a=[],i;
for(i=0;i<4;i++) {
  a.push(images.splice(Math.rand()*images.length,1));
  document['i'+i].src=a[i].src;
  }
images = a;
}

GhostWolf 22.12.2009 22:35

PeaceCoder, зря вы про лень. Я честно старался два вечера. Ну не знаю я JS (справочник смотрел, но во времени я ограничен и начинать с hello world и т.д. уже поздно) и отладчика к нему нема. В этом плане в ассемблере и то приятней писать.
Спасибо за строчку
document['i'+i].src=a[i].src;


Я так понял, по логике, частным ее случаем будет
document[i2].src="0.gif"

И этот случай должен работать по-любому. Просто у меня опять ничего не работает:haha: Может руки кривые. Вы не ругайтесь, я не волшебник, я только учусь. У нас препод на любой вопрос отвечает: там все написано. Вот и пляши как хочешь

PeaceCoder 22.12.2009 22:45

Цитата:

Сообщение от GhostWolf
Я так понял, по логике, частным ее случаем будет

частным случаем будет document.iN.src = a[N].src


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