Случайный URL JS с несколькими списками - PullRequest
0 голосов
/ 30 сентября 2011

У меня есть панель навигации, и я хочу получить доступ к случайному URL из отдельного списка, связанного с каждой ссылкой. Ссылка A будет обращаться к списку A, ссылка B будет обращаться к списку B и так далее. Я использую код JavaScript с 1997 года, который отлично работает для одной ссылки:

<- код, содержащийся в js-файле: ->

rnd.today=new Date();
rnd.seed=rnd.today.getTime();

function rnd() {
        rnd.seed = (rnd.seed*9301+49297) % 233280;
        return rnd.seed/(233280.0);
};

function rand(number) {
        return Math.ceil(rnd()*number);
};

var item = 0;
var URL = new Array();

URL[item++] = 'listitema.php';
URL[item++] = 'listitemb.php.php';
URL[item++] = 'listitemc.php';

function randomJump() {
    var random = rand(item) - 1;
    location.href = URL[random];
};

<- конец файла js: ->

Доступ к этому:

<a href="javascript:randomJump()" onmouseover="self.status='';return true">

Хотя этот код хорошо работает для одной ссылки на страницу, мне нужно, чтобы он работал для нескольких ссылок, каждая из которых имеет свой список ссылок. Я понятия не имею, как сделать это сценарий, который работает для каждой ссылки, не мешая другим ссылкам. Спасибо.

1 Ответ

1 голос
/ 30 сентября 2011

Вот небольшая функция, которая работает с любым количеством различных списков URL:

var listA = [
    'listitem-a.php',
    'listitem-b.php',
    'listitem-c.php'
];

var listB = [
    'listitem-1.php',
    'listitem-2.php',
    'listitem-3.php'
];

var listC = [
    'listitem-x.php',
    'listitem-y.php',
    'listitem-z.php'
];

function goRandomURL(list) {
    window.location = list[Math.floor(Math.random() * list.length)];
}

Затем, чтобы использовать listA, вы должны вызвать:

goRandomURL(listA);

илипоместите его в ссылку, подобную этой:

<a href="#" onclick="goRandomURL(listA)">

или для списка B, вы должны использовать это:

<a href="#" onclick="goRandomURL(listB)">

Для справки: функция javascript Math.random() возвращает случайное числокак число с плавающей точкой от 0 до 1 (не включая 1), и он уже заполнен в зависимости от локальной среды, поэтому вам не нужно вводить свои собственные начальные или случайные функции.Затем случайное число масштабируется по длине переданного массива, а затем округляется до целого числа для индексации массива.Это приводит к выбору случайного индекса для нашего массива.Он автоматически отслеживает длину массива, поэтому вы можете добавлять / удалять элементы из массива без какого-либо изменения кода.


РЕДАКТИРОВАТЬ - чтобы помочь вам в текущем коде.В вашем текущем коде я вижу это:

var listA = [
    'orange.php';
    'red.php';
    'blue.php';
];

var listB = [
    'gold.php';
    'silver.php';
    'bronze.php';
];

var listC = [
    'olive.php';
    'pink.php';
    'purple.php';
];

Это должно быть так:

var listA = [
    'orange.php',
    'red.php',
    'blue.php'
];

var listB = [
    'gold.php',
    'silver.php',
    'bronze.php'
];

var listC = [
    'olive.php',
    'pink.php',
    'purple.php'
];

И это:

goRandomURL(list) {
    window.location = list[Math.floor(Math.random() * list.length)];
}

должно быть так:

function goRandomURL(list) {
    window.location = list[Math.floor(Math.random() * list.length)];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...