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

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

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

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

jQuery

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

HTML

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

Q&A

解決済

3回答

802閲覧

<button>をクリックするたびに<ol><li>の中身と番号を逆順にしたい

kodks

総合スコア1

JavaScript

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

jQuery

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

HTML

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

0グッド

0クリップ

投稿2021/04/21 03:32

編集2021/04/21 03:35

現在、ボタンをクリックすると、

(1)ol,li の中身を逆順に表示
(2)<button>のテキスト変更(「昇順に並び替え」から「降順に並び替え」)

という処理をjQueryで書いています。
現状では<li>のテキストのみ入れ替わっています。

解決したいこと

<li>の数字も逆にしたい(1,2,3,4...から5,4,3,...に)

該当のソースコード

html

1<!DOCTYPE html> 2<html lang="ja"> 3<head> 4<meta charset="UTF-8"> 5<meta name="keywords" content=""> 6<title>test</title> 7<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script> 8<script> 9 $(function(){ 10 $("#reverse").click(function(){ 11 var myArray= $.makeArray($("ol li")); 12 myArray.reverse(); 13 $("ol").html($(myArray)); 14 if($("#reverse").text() === "昇順に並び替え") { 15 $(this).text('降順に並び替え'); 16 17 } else { 18 $(this).text('昇順に並び替え'); 19 } 20 21 }); 22 23 }); 24 </script> 25</head> 26 27<body> 28 <button id="reverse">昇順に並び替え</button> 29 30 <ol> 31 32 <li class="papers">りんご</li> 33 <li class="papers">ごりら</li> 34 <li class="papers">らっぱ</li> 35 <li class="papers">ぱんつ</li> 36 <li class="papers">つみき</li> 37 38</ol> 39 40</body> 41</html>

自分で試したこと

jQueryのreplaceWithで<ol><ol reversed>に書き換えようとしましたが、上手くいきません。

よろしくお願いいたします!

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

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

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

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

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

guest

回答3

0

ベストアンサー

降順リストを作る際は<ol>"reversed"属性を使います。IE以外の全てのモダンブラウザでサポートされています

html

1<!DOCTYPE html> 2<html lang="ja"> 3<head> 4<meta charset="UTF-8"> 5<meta name="keywords" content=""> 6<title>test</title> 7<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script> 8<script> 9 $(function(){ 10 $("#reverse").click(function(){ 11 var myArray= $.makeArray($("ol li")); 12 myArray.reverse(); 13 $("ol").html($(myArray)); 14 if($("#reverse").text() === "昇順に並び替え") { 15 $("#list").removeAttr("reversed") // "reversed"を無効にする 16 $(this).text('降順に並び替え'); 17 18 } else { 19 $("#list").attr("reversed", "true") // "reversed"を有効にする 20 $(this).text('昇順に並び替え'); 21 } 22 23 }); 24 25 }); 26 </script> 27</head> 28 29<body> 30 <button id="reverse">昇順に並び替え</button> 31 32 <ol id="list" reversed> 33 34 <li class="papers">りんご</li> 35 <li class="papers">ごりら</li> 36 <li class="papers">らっぱ</li> 37 <li class="papers">ぱんつ</li> 38 <li class="papers">つみき</li> 39 40</ol> 41 42</body> 43</html>

投稿2021/04/21 03:57

itepechi

総合スコア248

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

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

kodks

2021/04/21 05:13

やりたいことに一番近い記述でしたのでベストアンサーに選びました。 ご回答ありがとうございました!
guest

0

こんにちは。
フレックスレイアウトを使ってみてはどうでしょうか。

サンプル

js

1 $("#reverse").click(function(){ 2 3 $("ol").toggleClass('reverse'); 4 if($("#reverse").text() === "昇順に並び替え") { 5 $(this).text('降順に並び替え'); 6 7 } else { 8 $(this).text('昇順に並び替え'); 9 } 10 11 });

css

1ol{ 2 display: flex; 3 flex-direction: column; 4} 5ol.reverse{ 6 flex-direction: column-reverse; 7}

投稿2021/04/21 03:53

Lhankor_Mhy

総合スコア36960

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

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

kodks

2021/04/21 05:25

ご回答ありがとうございました!cssの記述はできれば増やしたくないです。フレックスレイアウトでも今度書いてみますね。
guest

0

javascript

1$(function(){ 2 $('#reverse').on('click',function(){ 3 $(this).text(function(){ 4 return $(this).text().replace(/[降昇](?=順)/,function(m){ 5 return {'降':'昇','昇':'降'}[m]; 6 }) 7 }); 8 $('ol').append($('.papers').get().reverse()).attr('reversed',function(){ 9 return $(this).attr('reversed')?null:'reversed'; 10 }); 11 }); 12});

※調整

投稿2021/04/21 04:18

編集2021/04/21 04:30
yambejp

総合スコア116734

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

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

kodks

2021/04/21 05:23

ありがとうございます。この書き方も今度試してみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問