Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Скрипт случайного выбора при загрузке страницы (https://javascript.ru/forum/misc/22789-skript-sluchajjnogo-vybora-pri-zagruzke-stranicy.html)

dzhigora 01.11.2011 01:01

Скрипт случайного выбора при загрузке страницы
 
Подскажите, пожалуйста.
Нашел скрипт
<script language="javascript">
<!--
var a=Math.round(Math.random()*3) 
//это число должно совпадать с максимальным индексом таблицы изображений
image = new Array();
image[0]="img00001.jpg"
image[1]="img00002.jpg"
image[2]="img00003.jpg"
image[3]="img00004.jpg" 
//с максимальным индексом image[..] совпадает число, на которое умножаем вверху
document.write ("<img src="+image[a]+">");
//-->
</script>


Но возникла необходимость привязать к случайному изображению заданую ссылку, скрипт переписал
<script language="javascript">
<!--
var a=Math.round(Math.random()*31)
//это число должно совпадать с максимальным индексом таблицы изображений
image = new Array();
image[0]="01.jpg"
image[1]="02.jpg"
image[2]="03.jpg"
image[3]="04.jpg" 
Address = new Array();
Address[0]="http://index1.html"
Address[1]="http://index2.html"
Address[2]="http://index3.html"
Address[3]="http://index4.html"
//с максимальным индексом image[..] совпадает число, на которое умножаем вверху
document.write ("<a href='"+Address[a]+"'><img src='"+Image[a]+"'></a>");
//-->
</script>


Но по какой-то причине не формируется ссылка на изображение, file://localhost/undefined, подскажите пожалуста, где я ошибся. Заранее благодарен за ответ.

trikadin 01.11.2011 01:35

Цитата:

Сообщение от dzhigora
Address[0]="http://index1.html"

Потому что здесь вы пытаетесь перейти на сайт index1.html. Уберите "http://".

И вообще, поизучайте javascript ещё. У вас неплохо получится. Здесь много устаревшего и неправильного, но это вина того, кто писал оригинальный код)

trikadin 01.11.2011 01:39

Цитата:

Сообщение от nasqad
new Array() - плохо, // []

Если уж на то пошло, то и document.write очень нехорошо!

Цитата:

Сообщение от nasqad
--image.length

Дурной, штоле? Уменьшение св-ва length массива влечёт за собой уменьшение количества элементов в массиве.

arr= [1, 2, 3];
--arr.length;
alert(arr);

dzhigora 02.11.2011 16:49

Может кому-то будет интетересен такой вариант решения задания
<script language="javascript"> 
<!--
var Image=new Array("00.jpg","01.jpg","02.jpg","03.jpg");
var Address=new Array("index.html","index1.html","index2.htm","index3.html");
var i=Math.round(Math.random()*3);
document.write("<a href='"+Address[i]+"' target='_blank'><img src='"+Image[i]+"'></a>");
//--> 
</script>

Всем, большое спасибо, за содействие в решении проблемы.

trikadin 02.11.2011 16:57

nasqad писал же: не стоит использовать new Array().

Лучше так:
var Image=["00.jpg","01.jpg","02.jpg","03.jpg"]


Между двумя этими методами есть разница - в первом случае вы создаёте объект Array, а во втором случае вы создаёте массив. Пример:

bool1= false;
bool2= new Boolean(false);
alert(!!bool1); // приводим переменные к логическому значению
alert(!!bool2);


Примерно такая же разница и между new Array и [].

shukov 29.09.2012 09:36

Лучше так
<script>
var Image = [
['00.jpg','index.html'],
['01.jpg','index1.html'],
['02.jpg','index2.htm'],
['03.jpg','index3.html']
]
var i=Math.round(Math.random()*3);
document.write("<a href='"+Image[i][1]+"' target='_blank'><img src='"+Image[i][0]+"'></a>");
</script>

trikadin 30.09.2012 00:44

shukov, а поста постарше вы не нашли?))


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