jQuery如果没有图像显示数组中的随机图像

时间:2015-01-06 17:03:41

标签: jquery arrays

我有2个模板,并且有2个类适用于body标签,并且我试图让模板主体只有来自AFimages数组的图像上的非洲类显示但是如果模板主体具有2个类非洲和centrala显示来自CAimages数组的图像,但仅在没有图像的情况下显示。

它适用于一个但不能让它为body.africa.centrala if语句做。

var AFimages = [
    '/images/LexMundiWebsite/images_AfricaBanner/1.jpg',
    '/images/LexMundiWebsite/images_AfricaBanner/2.jpg',
    '/images/LexMundiWebsite/images_AfricaBanner/3.jpg',
    '/images/LexMundiWebsite/images_AfricaBanner/4.jpg'
];
if ($('body.africa .header-img').length) { // implies *not* zero  

} else {
    $('<div class="row"><div class="twelve columns header-img"><img src="' + AFimages[Math.floor(Math.random() * AFimages.length)] + '"></div></div>').insertAfter('.top-nav-default-africa');
}
var CAimages = [
    '/images/LexMundiWebsite/images_CentralAmericaBanner/1.jpg',
    '/images/LexMundiWebsite/images_CentralAmericaBanner/2.jpg',
    '/images/LexMundiWebsite/images_CentralAmericaBanner/3.jpg',
    '/images/LexMundiWebsite/images_CentralAmericaBanner/4.jpg'
];
if ($('body.africa.centrala .header-img').length) { // implies *not* zero  

} else {
    $('<div class="row"><div class="twelve columns header-img"><img src="' + AFimages[Math.floor(Math.random() * AFimages.length)] + '"></div></div>').insertAfter('body.africa.centrala .top-nav-default-africa');
}

1 个答案:

答案 0 :(得分:0)

最好在原始图像上使用onerror调用。

原始图片:

<img src="notvalid.png" onerror="randomimg" />

<script>
var AFimages = [
    '/images/LexMundiWebsite/images_AfricaBanner/1.jpg',
    '/images/LexMundiWebsite/images_AfricaBanner/2.jpg',
    '/images/LexMundiWebsite/images_AfricaBanner/3.jpg',
    '/images/LexMundiWebsite/images_AfricaBanner/4.jpg'
];

function RandomXToY(min,max) {
    return Math.floor(Math.random() * (max - min + 1) + min);
}

function randomimg(){
  this.src=AFimages[RandomXToY(1,4)];
}
</script>