13043


以下のようにある部分までの想定はできているのですが、どうしても  
「str」を持つ要素だけを取得、配列に代入する方法が分からず苦戦しています。

[code]

    function getCurrentImage(str) {
      /*
      * TODO : strを持つ要素を取得して配列に代入
      */
      var elm = [];
    
      //配列からランダムに値を取得
      var random = elm[Math.floor(Math.random() * elm.length)];
    
      //対象をdisplay:blockにする
      elm.random.css('display', 'block');
    }
    
    getCurrentImage('day');
[/code]

[code]

    img {
      display: none;
    }
[/code]

[code]

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
    
    <img src="a.jpg" data-role="day">
    <img src="b.jpg" data-role="day">
    <img src="c.jpg" data-role="day">
    <img src="d.jpg" data-role="night">
    <img src="e.jpg" data-role="night">
[/code]

どなたか良い方法をご存知、もしくは似たような経験をお持ちの方のお力添えを願いたく投稿させていただきました。


CC BY-SA 3.0
2015-08-04T14:27:17.097
13038
2015-08-04T15:03:53.403
8500
question
javascript jquery
jQueryで特定のattrを持つ要素の中からランダムに一つだけ表示にしたい


jQuery で下記のようにして指定属性で要素を取得できます。  
配列に(変換)する必要はないです。`.get`でインデックスを指定して要素を取り出せます。

[code]

    function getCurrentImage(str) {
      var elm = $("img[data-role='" + str + "']");//指定属性の要素の取得
      //取得した要素からランダムに要素を取得
      var random = elm.get(Math.floor(Math.random() * elm.length));
      //対象をdisplay:blockにする
      $(random).css('display', 'block');
    }
    
[/code]


CC BY-SA 3.0
2015-08-04T15:03:53.403
13043
2015-08-04T15:03:53.403
5044
13038
answer