Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Дополнить скрипт (https://javascript.ru/forum/misc/60491-dopolnit-skript.html)

newuser123 03.01.2016 17:08

Дополнить скрипт
 
Здравствуйте.
Помогите плиз дописать скрипт, чтобы в урле <a href='/user/random.html'> слово random заменялось на случайное число.
Заранее благодарен за помощь.

<script type="text/javascript">
var images = new Array(
"images/thumb_1.jpg",
"images/thumb_2.jpg",
"images/thumb_3.jpg",
"images/thumb_4.jpg"
);
var img = images;
for (var i = 0; i < 5; i++) {
var a = Math.floor(Math.random() * img.length);
document.write ("<div class='photo'><a href='/user/random.html'><img src ='"+img[a]+"' /></a><br><br></div>");
img.splice(a,1);
};
</script>

newuser123 03.01.2016 17:26

Вроде что-то нацарапал, не знаю это правильно.

<script type="text/javascript">
var images = new Array(
"images/thumb_1.jpg",
"images/thumb_2.jpg",
"images/thumb_3.jpg",
"images/thumb_4.jpg",
"images/thumb_5.jpg",
"images/thumb_6.jpg",
"images/thumb_7.jpg",
"images/thumb_8.jpg",
"images/thumb_9.jpg",
"images/thumb_10.jpg",
"images/thumb_11.jpg",
"images/thumb_12.jpg",
"images/thumb_13.jpg",
"images/thumb_14.jpg",
"images/thumb_15.jpg",
"images/thumb_16.jpg",
"images/thumb_17.jpg",
"images/thumb_18.jpg",
"images/thumb_19.jpg",
"images/thumb_20.jpg",
"images/thumb_21.jpg",
"images/thumb_22.jpg",
"images/thumb_23.jpg",
"images/thumb_24.jpg",
"images/thumb_25.jpg",
"images/thumb_26.jpg",
"images/thumb_27.jpg",
"images/thumb_28.jpg",
"images/thumb_29.jpg",
"images/thumb_30.jpg"
);
var img = images;
var num = new Array(
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
"10",
"11",
"12",
"13",
"14",
"15",
"16",
"17",
"18",
"19",
"20",
"21",
"22",
"23",
"24",
"25",
"26",
"27",
"28",
"29",
"30"
);
var cifr = num;
for (var i = 0; i < 5; i++) {
var a = Math.floor(Math.random() * img.length);
document.write ("<div class='photo'><a href='/user/"+cifr[a]+".html'><img src ='"+img[a]+"' /></a><br><br></div>");
img.splice(a,1);
};
</script>

Keramet 03.01.2016 17:57

а не проще массивы определять в цикле:

for (var i = 1, images = [], num = []; i <= 30; i += 1) {
     images.push("images/thumb_" + i +".jpg");
     num.push("" + i);
}

Keramet 03.01.2016 18:02

newuser123,
а какой смысл заложен в переменную cifr? Чем она отличается от num?

рони 03.01.2016 18:03

newuser123,
Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[js]
... ваш код...
[/js]


О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.

рони 03.01.2016 18:03

newuser123,
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">

<script>
Array.prototype.randomShuffle = function(c, b) {
    c = c || 0;
    b = ++b || this.length;
    var a = b - c;
    b = a - this.length;
    this.length = a--;
    for (; 0 <= a && !(a < b); a--) {
        var d = Math.floor(Math.random() * a),
            e = void 0 === this[d] ? d + c : this[d];
        this[d] = void 0 === this[a] ? a + c : this[a];
        this[a] = e
    }
    this.reverse();
    this.length -= b;
    return this
};


</script>
</head>

<body>

<script>
Array(5).randomShuffle(1,30).forEach(function(el) {
     document.write ("<div class='photo'><a href='/user/"+el+".html'><img src ='images/thumb_"+el+".jpg' /></a><br><br></div>");
});
</script>
</body>

</html>

Keramet 03.01.2016 18:11

рони,
При всём уважении - но это, по-моему, слишком заумно. Красиво - но заумно :)
Чем плох вариант ТС, если его малость доработать? Ну к примеру:

for (var i = 1, num = []; i <= 30; i += 1) {
     num.push("" + i);
}
for (var i = 0; i < 5; i += 1) {
   var a = Math.floor(Math.random() * num.length);
   document.write ("<div class='photo'><a href='/user/" + num[a] +
                   ".html'><img src ='images/thumb_" + num[a] + ".jpg' /></a><br><br></div>");
   num.splice(a,1);
};

рони 03.01.2016 18:28

Keramet,
ок

ruslan_mart 03.01.2016 18:36

Цитата:

Сообщение от Keramet
а не проще массивы определять в цикле:

Зачем? Это лишнее.

Цитата:

Сообщение от Keramet
i += 1

Почему не i++?

Цитата:

Сообщение от Keramet
num.push("" + i);

Зачем кавычки?

newuser123 03.01.2016 18:55

Всем Большое спасибо за помощь, скрипт работает как надо использовал вариант доработки от Keramet.


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