質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

2回答

721閲覧

指定した数以降をランダム表示にしたい

lingwood

総合スコア40

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2019/07/11 06:36

編集2019/07/11 06:47

前提・実現したいこと

新着ボックス(リスト)を作成しているのですが、
新しいアイテムの4つ目までを固定して、
それより以前のものをランダムに表示したい。
という内容になります。

またシステムから出るデータなのでリストを2つにしたり
すると重複データが出てしまうため困っています。

現在は、以下のコードを使って全てランダムにしています。

使用中のコード

<script> $(function() { var arr = []; $("#random li").each(function() { arr.push($(this).html()); }); arr.sort(function() { return Math.random() - Math.random(); }); $("#random").empty(); for(i=0; i < arr.length; i++) { $("#random").append('<li>' + arr[i] + '</li>'); }  }); </script> <ul id="random"> <li>1</li> <li>2</li> <li>3</li> <li>4</li> <li>5</li> <li>6</li> <li>7</li> <li>8</li> <li>9</li> </ul<!--random-->

試したこと

リスト後半にクラスをつけてそこをシャッフルさせようとしたのですが、
うまくできませんでした。

<script> $(function() { var arr = []; $("#random li.rdm").each(function() { arr.push($(this).html()); }); arr.sort(function() { return Math.random() - Math.random(); }); $("#random").empty(); for(i=0; i < arr.length; i++) { $("#random").append('<li>' + arr[i] + '</li>'); }  }); </script> <ul id="random"> <li>1</li> <li>2</li> <li>3</li> <li>4</li> <li class="rdm">5</li> <li class="rdm">6</li> <li class="rdm">7</li> <li class="rdm">8</li> <li class="rdm">9</li> </ul<!--random-->

宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kei344

2019/07/11 06:38

質問タグにある「JAVA」は「JavaScript」の間違いでは?
lingwood

2019/07/11 06:46

kei344 失礼いたしました。修正いたしました。 ご指摘ありがとうございます。
guest

回答2

0

ベストアンサー

javascript

1<script> 2$(function(){ 3 $('#random .rdm').get().map(function(x){ 4 return [x,Math.random()]; 5 }).sort(function(x,y){ 6 return x[1]-y[1]; 7 }).forEach(function(x){ 8 $(x[0]).appendTo($('#random')); 9 }); 10}); 11</script> 12<ul id="random"> 13 <li>1</li> 14 <li>2</li> 15 <li>3</li> 16 <li>4</li> 17 <li class="rdm">5</li> 18 <li class="rdm">6</li> 19 <li class="rdm">7</li> 20 <li class="rdm">8</li> 21 <li class="rdm">9</li> 22</ul>

投稿2019/07/11 07:00

編集2019/07/11 07:01
yambejp

総合スコア114883

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yambejp

2019/07/11 07:05

> リストを2つにしたりすると重複データが出てしまう の状況がわかりません。具体例があれば提示ください
lingwood

2019/07/11 08:59

yambejp 様 コードありがとうございます!たった今、試行して完璧でした!!本当にありがとうございます!!! 事後ですが、リストを2つというのは、<ul>を2つにするという意味になります。 データベースから出力するのですが「4つだけ出力」することはできるのですが「5つ目以降を出力」というのができなかったためです。 わかりにくくすみません。いずれに本当に助かりました。ありがとうございました!! またの際にも何卒宜しくお願い致します。
guest

0

リスト後半にクラスをつけてそこをシャッフルさせようとしたのですが、

全部消してしまっているからです。

js

1 // $("#random").empty(); 2 $("#random li.rdm").remove(); 3```**動くサンプル:**[https://jsfiddle.net/bgpfe4z9/](https://jsfiddle.net/bgpfe4z9/) 4 5--- 6 7.remove() | jQuery API Documentation】 8[https://api.jquery.com/remove/](https://api.jquery.com/remove/)

投稿2019/07/11 07:56

kei344

総合スコア69430

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

lingwood

2019/07/11 08:41

kei344 様 ご回答ならびにサンプルありがとうございます!!実はそれを試したのですがシステムからデータが出ているためなぜかループしてデータが重複してしまうという現象が発生していました。 せっかくご回答いただいたのにすみません。でも、ありがとうございました!! またの際にも宜しくお願いします!!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問