【问题标题】:Randomised Images is not showing随机图像未显示
【发布时间】:2016-03-24 14:46:41
【问题描述】:

功能: 我正在尝试设置一个随机图像页面。因此,当用户进入一个页面时,页面中的图像表总是随机的。

我做了什么:

首先,我创建了一个图像文件数组var ImageArray=["","","",....]。其次,我创建了一个随机方法 var random_BrandIndex = Math.floor(Math.random() * BrandNameArray.length);,最后,我创建了一个 for 循环,允许图像填充在 html 正文中创建的表格。

我已附上代码供您阅读:

//Brand Array
var BrandNameArray = ["lib/img/PAGE03/Brands/Ads.png", "lib/img/PAGE03/Brands/AEO.png", "lib/img/PAGE03/Brands/AO.png", "lib/img/PAGE03/Brands/Beauty.png", "lib/img/PAGE03/Brands/Be.png", "lib/img/PAGE03/Brands/DS.png", "lib/img/PAGE03/Brands/Cch.png", "lib/img/PAGE03/Brands/Coton.png", "lib/img/PAGE03/Brands/Dwel.png", "lib/img/PAGE03/Brands/esBr.png", "lib/img/PAGE03/Brands/Et.png", "lib/img/PAGE03/Brands/E.png"];
//To Set random Brand
var random_BrandIndex = Math.floor(Math.random() * BrandNameArray.length);
//Assign Variable to generate random Brands
var Brand = BrandNameArray[random_BrandIndex];

$(function() {
  console.log(Brand);
  //Auto populate into brand container once randomised
  for (i = 0; i < Brand.length; i++) {
    $('#Brand_' + (i + 1)).attr('src', Brand[i]);
    $('#Brand_' + (i + 1)).show();
  }
});
.Container {
  position: absolute;
  top: 300px;
  left: 300px;
  height: 600px;
  width: 1250px;
  overflow-y: scroll;
}
.innerScroll {
  position: relative;
  width: 1250px;
  height: 600px;
  font-size: 25px;
  color: #8d8989 !important;
  overflow: scroll;
}
<div class="Container">
  <div id="list" class="innerScroll">
    <!--1st Row-->
    <img id="Brand_1" style="width:284px; height:140px; top:0px; left:0px; border:0px; outline:0px" onclick="selectBrand('1');">
    <img id="Brand_2" style="width:284px; height:140px; top:0px; left:330px; border:0px;" onclick="selectBrand('2');">
    <img id="Brand_3" style="width:284px; height:140px; top:0px; left:650px; border:0px;" onclick="selectBrand('3');">
    <img id="Brand_4" style="width:284px; height:140px; top:0px; left:965px; border:0px;" onclick="selectBrand('4');">

    <!--2nd Row-->
    <img id="Brand_5" style="width:284px; height:140px; top:140px; left:0px; border:0px;" onclick="selectBrand('5');">
    <img id="Brand_6" style="width:284px; height:140px; top:140px; left:330px; border:0px;" onclick="selectBrand('6');">
    <img id="Brand_7" style="width:284px; height:140px; top:140px; left:650px; border:0px;" onclick="selectBrand('7');">
    <img id="Brand_8" style="width:284px; height:140px; top:140px; left:965px; border:0px;" onclick="selectBrand('8');">

    <!--3rd Row-->
    <img id="Brand_9" style="width:284px; height:140px; top:280px; left:0px; border:0px;" onclick="selectBrand('9');">
    <img id="Brand_10" style="width:284px; height:140px; top:280px; left:330px; border:0px;" onclick="selectBrand('10');">
    <img id="Brand_11" style="width:284px; height:140px; top:280px; left:650px; border:0px;" onclick="selectBrand('11');">
    <img id="Brand_12" style="width:284px; height:140px; top:280px; left:965px; border:0px;" onclick="selectBrand('12');">

    <!--4th Row-->
    <img id="Brand_09" style="width:284px; height:140px; top:280px; left:0px; border:0px;" onclick="selectBrand('9');">
    <img id="Brand_10" style="width:284px; height:140px; top:280px; left:330px; border:0px;" onclick="selectBrand('10');">
    <img id="Brand_11" style="width:284px; height:140px; top:280px; left:650px; border:0px;" onclick="selectBrand('11');">
    <img id="Brand_12" style="width:284px; height:140px; top:280px; left:965px; border:0px;" onclick="selectBrand('12');">.....(more rows of images)...
  </div>

问题

从返回控制台日志中,当它应该返回一个品牌列表时,它只返回一个品牌。 我想问我做错了什么以及如何将每个返回的随机图像附加到 div 内的容器中???

请帮忙。

【问题讨论】:

    标签: javascript jquery arrays sorting random


    【解决方案1】:

    在您的代码 (var Brand = BrandNameArray[random_BrandIndex];) 中,因此品牌是单个字符串而不是数组。

    var BrandNameArray = ["lib/img/PAGE03/Brands/Ads.png", "lib/img/PAGE03/Brands/AEO.png", "lib/img/PAGE03/Brands/AO.png", "lib/img/PAGE03/Brands/Beauty.png", "lib/img/PAGE03/Brands/Be.png", "lib/img/PAGE03/Brands/DS.png", "lib/img/PAGE03/Brands/Cch.png", "lib/img/PAGE03/Brands/Coton.png", "lib/img/PAGE03/Brands/Dwel.png", "lib/img/PAGE03/Brands/esBr.png", "lib/img/PAGE03/Brands/Et.png", "lib/img/PAGE03/Brands/E.png"];
    //To Set random Brand
    
    $(function() {
      //Auto populate into brand container once randomised
      for (i = 0; i < $('#list').find('img').length; i++) {
    var random_BrandIndex = Math.floor(Math.random() * BrandNameArray.length);
    //Assign Variable to generate random Brands
    var Brand = BrandNameArray[random_BrandIndex];
        $('#Brand_' + (i + 1)).attr('src', Brand);
        $('#Brand_' + (i + 1)).show();
      }
    });
    

    【讨论】:

    • 好的,但是此时,有一个 TypeError: Cannot read property 'length' of undefined。此外,您可能错过了 Brand[i] @$('#Brand_' + (i + 1)).attr('src', Brand);。我这样说对吗?
    • 错误在for (i = 0; i &lt; Brand.length; i++);这个长度是 BrandNameArray 的长度还是列表中图像的数量?以便我可以编辑和更正代码。
    • @Luke 我刚刚编辑了将提到的变量设置为图像数量的代码,请检查它
    • 好的,我刚刚意识到,从这个意义上说。出现的图像可能会出现两次或三次。怎么可能让它在每个容器中只出现一次??
    • 如果我编辑答案,它将与问题不匹配。如果我们在这里完成。您可以在另一个问题中提问,或编辑问题。或者我们可以在聊天中讨论。
    猜你喜欢
    • 2010-11-08
    • 1970-01-01
    • 2013-11-10
    • 1970-01-01
    • 1970-01-01
    • 2012-06-10
    • 1970-01-01
    • 1970-01-01
    • 2019-05-16
    相关资源
    最近更新 更多