#jquery
#jquery
Вопрос:
У меня есть следующая функция:
var randomImages = ["bgr1","bgr2","bgr3","bgr4","bgr5","bgr6"];
var rndNum = Math.floor(Math.random() * randomImages.length);
$(".myDiv").css({ background: "url(/images/" randomImages[rndNum] ".gif)" });
Поскольку все изображения имеют одинаковое имя, за исключением последнего числового значения, не могу ли я упростить это?
Ответ №1:
var numImages = 6;
var rndNum = Math.floor(Math.random() * numImages) 1;
$(".myDiv").css({ background: "url(/images/bgr" rndNum ".gif)" });
Комментарии:
1. Разве для этого не требуется, чтобы массив randomImages оставался определенным? У меня возникло ощущение, что упрощение, к которому стремится OP, заключается в устранении необходимости определять массив, где единственным различием в каждом значении является число в конце.
2. Doh, конечно. Спасибо. Глупая оплошность… Вам не нужно
randomImages.length
, вам просто нужно6
. Редактирование…
Ответ №2:
Это может показаться очевидным, но если вы знаете, сколько у вас изображений, вы могли бы заменить случайные изображения.длина с константой, например, 5 для аргументов, тогда вам не нужен массив, поэтому это будет всего одна строка:
$(".myDiv").css( { background: "url(/images/bgr" Math.ceil(Math.random() * 5) ".gif)" } );
Примечание: math.ceil было бы лучше, так как тогда вам не нужен 1.
Ответ №3:
Да, вы можете. Обратите внимание, что вы можете захотеть определить константу, а не просто использовать магическое число 6, но идея заключается именно в этом.
var rndNum = Math.floor(Math.random() * 6) 1;
$(".myDiv").css({ background: "url(/images/bgr" rndNum ".gif)" });