2012-06-06 2 views
0

В настоящее время у меня есть код, который успешно устанавливает случайное изображение из массива как фон .wrapper. Я хотел бы иметь еще одну переменную (строку), которая постоянно сопрягается с каждым конкретным изображением, так что, когда изображение выбирается случайным образом, его конкретная строка также передается. Поэтому, если случайно выбрано foo.jpg, переменная x установлена ​​в 'foo ', но если bar.jpg случайным образом выбран, переменная x установлена ​​в' bar '.Связанная строка с изображением

Любые идеи, как это можно достичь? Возможно, с объектом JSON?

мой код:

var images = ["foo.jpg", "bar.jpg", "baz.jpg", "qux.jpg"]; 
function getImage() { 
     return images[Math.floor(Math.random() * images.length)]; 
} 
$('.wrapper').css({ 
    'background' : 'url(' + getImage() + ') no-repeat center center fixed' 
}); 

Позвольте мне знать, какие-либо вопросы, вы можете иметь.

Thanks

+0

Вопрос не ясен. Было бы лучше, если бы вы описали, что вы пытаетесь сделать. – zerkms

+0

Я пытаюсь передать строку, относящуюся к случайно выбранному фоновому изображению, чтобы я мог ее отображать. – 585connor

+1

FYI, 'JSON' - это формат определения текстовых данных. Возможно, вы имели в виду «объект Javascript». – jfriend00

ответ

2

Вы можете сделать массив массив объектов, а не где каждый объект в массиве содержит как URL и тег. Вы случайным образом выбрать один из объектов, а затем может отдельно открыть как URL и тег:

var images = [ 
    {url: "foo.jpg", tag: "foo"}, 
    {url: "bar.jpg", tag: "bar"}, 
    {url; "baz.jpg", tag: "baz"}, 
    {url: "qux.jpg", tag: "qux"} 
]; 

function getNum() { 
     return Math.floor(Math.random() * images.length); 
} 
var item = images[getNum()]; 
$('.wrapper').css({ 
    'background' : 'url(' + item.url + ') no-repeat center center fixed' 
}).html(item.tag); 

Или, если тег всегда только основа имени изображения, так что вы можете разобрать его из URL, вы можете сделать это:

var images = ["foo.jpg", "bar.jpg", "baz.jpg", "qux.jpg"]; 
function getNum() { 
     return Math.floor(Math.random() * images.length); 
} 
var num = getNum(); 
$('.wrapper').css({ 
    'background' : 'url(' + images[num] + ') no-repeat center center fixed' 
}).html(images[num].replace(/\.jpg$/, "")); 
1

Вы можете попробовать использовать параллельные массивы.

var images = ["foo.jpg", "bar.jpg", "baz.jpg", "qux.jpg"]; 
var x  = ["foo", "bar", "baz", "qux"]; 
function getNum() { 
     return Math.floor(Math.random() * images.length); 
} 
var num = getNum(); 
$('.wrapper').css({ 
    'background' : 'url(' + images[num] + ') no-repeat center center fixed' 
}).html(x[num]);