最近javascriptをやり始めたばかりですが、行き詰まってしまいました。
やりたい事は、タイトルの通りでhtml内にあるliタグの順番をアクセス毎に並び替えたいと言うものです。
jQueryではなく、ピュア?jsでやりたいですが、ご教授頂けたら嬉しいです。
該当のソースコード
html
1<ul id="worksFigure"> 2 <li> 3 <img src="images/○○.jpg" alt=""> 4 </li> 5 <li> 6 <img src="images/○○.jpg" alt=""> 7 </li> 8 <li> 9 <img src="images/○○.jpg" alt=""> 10 </li> 11 <li> 12 <img src="images/○○.jpg" alt=""> 13 </li> 14 <li> 15 <img src="images/○○.jpg" alt=""> 16 </li> 17 <li> 18 <img src="images/○○.jpg" alt=""> 19 </li> 20 </ul>
javascript
1 // 要素の取得 2 let worksFigu = document.getElementById("worksFigure"); 3 let figuLi = worksFigu.childElementCount; 4 let figuLiLeng = worksFigu.getElementsByTagName("li"); 5 6 // ランダム関数 7 function rand() { 8 var Mrand = Math.floor(Math.random() * figuLiLeng.length -1 ); 9 return Mrand; 10 } 11 12 figuLiLeng[rand()];//li.lengthのランダム関数ができる 13 14 // 要素の数だけ繰り返す 15 for(i = 0; i < figuLiLeng.length; i++ ) { 16 let numb = Math.floor(Math.random() * figuLiLeng.length );//0~13をランダムで返す 17 console.log(numb); 18 }
試したこと
liが14個ほど並びます。js側で画像を配列にして<ul>の中に入れるのはわかるのですが、今後の更新も兼ねてjsを弄るよりはhtml側に<li>を増やすだけで良くしたいです。
私のロジックでは 1,要素(DOM)の取得。2,要素(li)数だけランダムを繰り返す。3,ランダムだと同じ数字を吐き出すので重複させない。4,html側に吐き出す。
3番目の重複させないと言うものが調べても全く理解できません。乱数を重複させないで有名な何とか法てものも見ましたが…。
ちなみに画像名は別々で、決まりもないです。なのでliに対して操作したいです。伝え方が下手ですが、宜しくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/06 06:49
2020/05/06 07:18
2020/05/06 07:39