从数组接收随机img

时间:2016-02-10 07:52:26

标签: javascript arrays angularjs random ionic-framework

我无法从数组中获取img,我有一个包含6个变量的数组应该是图像的路径,但最后的console.log只给我一个随机变量,如sk11,sk15。 ....但它们并不等于图像的路径。

.controller('ArCtrl', function($scope) {

  var sk11,sk12,sk13,sk14,sk15,sk16;
  var kockice = ['sk11', 'sk12', 'sk13', 'sk14', 'sk15', 'sk16'];

  var rank = kockice[Math.floor(Math.random() * kockice.length)];
  //working good, finds random varibale in array

  if(rank === sk11) {
    sk11 = "http://localhost:8100/img/1.jpg";
    rank = sk11;

  } else if(rank === sk12) {
    sk12 = "http://localhost:8100/img/2.jpg";
    rank=sk12;

  } else if(rank === sk13) {
    sk13 = "http://localhost:8100/img/3.jpg";
    rank=sk13;

  }else if(rank === sk14) {
    sk14 = "http://localhost:8100/img/4.jpg";
    rank=sk14;

  }else if(rank === sk15) {

   sk15 = "http://localhost:8100/img/5.jpg";
   rank=sk15;

  } else if(rank === sk16){
   sk16 = "http://localhost:8100/img/6.jpg";
   rank=sk16;
  };

  console.log(rank); //gets back random from arry kockice
  console.log(sk11); //shows undefined?why

2 个答案:

答案 0 :(得分:2)

假设您尝试将随机图像路径分配给rank变量,您应该做更多类似的事情:

var images = [ '1.jpg', '2.jpg', '3.jpg', '4.jpg', '5.jpg', '6.jpg' ];
var randomImage = images[Math.floor(Math.random() * images.length)];
var rank = 'http://localhost:8100/img/' + randomImage;

无需拥有所有这些if语句。甚至更多 - 拥有它们效率不高,因为如果在阵列中获得更多图像,则必须添加更多它们。

答案 1 :(得分:0)

编辑:虽然我的答案解决了您的具体问题,但@ tdragon的解决方案可能是更好的方法。

正如@Parth Trivedi在评论中所说,你需要在你的变量周围加上引号。

喜欢这样:if(rank === 'sk11')if(rank === 'sk12')等。

这是因为您目前正在检查rank是否等于变量sk11sk11在任何地方都没有给出值。 您需要检查rank是否等于字符串'sk11'

但是,如果console.log等于rank,您的'sk11'只会返回一些内容。否则,它仍然是未定义的。