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

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

ただいまの
回答率

90.03%

HTMLのリスト絞り込み表示のリセットボタン追加

解決済

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 823

irodory

score 4

前提・実現したいこと

当方プログラム初心者です。

こちらのサイトの下記サンプルに、リセットボタンを追加したいです。
http://cly7796.net/wp/javascript/implement-the-process-of-narrowing-down-the-list/
サンプル
http://cly7796.net/wp/sample/implement-the-process-of-narrowing-down-the-list/index3.html

リセットボタンを押すと、セレクトボックスやチェックボックスからチェックが外れ、
かつ非表示にしていた項目が全表示になるようにしたいです。
自分でもいろいろ試してはみたのですがわからず…
どうかご教授いただきたくお願いします。

該当のソースコード

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8" />

<title>サンプル</title>


<link rel="stylesheet" href="./sample.css" />

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="./sample3.js"></script>

<script src="../analytics.js"></script>
</head>
<body>
<div id="page">
    <div class="serchBox">
        <select name="type">
            <option value="">種類を選択</option>
            <option value="mammals">哺乳類</option>
            <option value="reptiles">爬虫類</option>
            <option value="birds">鳥類</option>
            <option value="other">その他</option>
        </select>
        <select name="live">
            <option value="">生活を選択</option>
            <option value="water">水中</option>
            <option value="land">陸上</option>
            <option value="water-and-land">水中と陸上</option>
            <option value="sky"></option>
        </select>
        <select name="color">
            <option value="">色を選択</option>
            <option value="black">黒系</option>
            <option value="white">白系</option>
            <option value="green">緑系</option>
            <option value="brown">茶系</option>
        </select>
        <div class="checkboxArea">
            <p>大きさを選択</p>
            <label for="small">
                <input type="checkbox" name="size" value="small" id="small" />小さい
            </label>
            <label for="middle">
                <input type="checkbox" name="size" value="middle" id="middle" />中くらい
            </label>
            <label for="large">
                <input type="checkbox" name="size" value="large" id="large" />大きい
            </label>
        </div>
        <div class="checkboxArea">
            <p>名前を選択</p>
            <label for="dog">
                <input type="checkbox" name="name" value="dog" id="dog" />イヌ
            </label>
            <label for="cat">
                <input type="checkbox" name="name" value="cat" id="cat" />ネコ
            </label>
            <label for="monkey">
                <input type="checkbox" name="name" value="monkey" id="monkey" />サル
            </label>
            <label for="dolphin">
                <input type="checkbox" name="name" value="dolphin" id="dolphin" />イルカ
            </label>
            <label for="jellyfish">
                <input type="checkbox" name="name" value="jellyfish" id="jellyfish" />クラゲ
            </label>
            <label for="penguin">
                <input type="checkbox" name="name" value="penguin" id="penguin" />ペンギン
            </label>
            <label for="turtle">
                <input type="checkbox" name="name" value="turtle" id="turtle" />カメ
            </label>
            <label for="redstart">
                <input type="checkbox" name="name" value="redstart" id="redstart" />ジョウビタキ
            </label>
            <label for="myna">
                <input type="checkbox" name="name" value="myna" id="myna" />九官鳥
            </label>
            <label for="butterfly">
                <input type="checkbox" name="name" value="butterfly" id="butterfly" /></label>
            <label for="crocodile">
                <input type="checkbox" name="name" value="crocodile" id="crocodile" />ワニ
            </label>
        </div>
    </div>

    <ul class="list">
        <li>
            <img src="01.jpg" width="240" height="155">
            <p class="name">名前:<span class="dolphin">イルカ</span></p>
            <p class="type">種類:<span class="mammals">哺乳類</span></p>
            <p class="live">生活:<span class="water">水中</span></p>
            <p class="color">色:<span class="black">黒系</span></p>
            <p class="size">大きさ:<span class="large">大きい</span></p>
        </li>
        <li>
            <img src="02.jpg" width="240" height="155">
            <p class="name">名前:<span class="jellyfish">クラゲ</span></p>
            <p class="type">種類:<span class="other">その他</span></p>
            <p class="live">生活:<span class="water">水中</span></p>
            <p class="color">色:<span class="white">白系</span></p>
            <p class="size">大きさ:<span class="small">小さい</span></p>
        </li>
        <li>
            <img src="03.jpg" width="240" height="155">
            <p class="name">名前:<span class="penguin">ペンギン</span></p>
            <p class="type">種類:<span class="birds">鳥類</span></p>
            <p class="live">生活:<span class="water-and-land">水中と陸上</span></p>
            <p class="color">色:<span class="black">黒系</span></p>
            <p class="size">大きさ:<span class="middle">中くらい</span></p>
        </li>
        <li>
            <img src="04.jpg" width="240" height="155">
            <p class="name">名前:<span class="turtle">カメ</span></p>
            <p class="type">種類:<span class="reptiles">爬虫類</span></p>
            <p class="live">生活:<span class="water-and-land">水中と陸上</span></p>
            <p class="color">色:<span class="green">緑系</span></p>
            <p class="size">大きさ:<span class="small">小さい</span></p>
        </li>
        <li>
            <img src="05.jpg" width="240" height="155">
            <p class="name">名前:<span class="redstart">ジョウビタキ</span></p>
            <p class="type">種類:<span class="birds">鳥類</span></p>
            <p class="live">生活:<span class="sky"></span></p>
            <p class="color">色:<span class="brown">茶系</span></p>
            <p class="size">大きさ:<span class="small">小さい</span></p>
        </li>
        <li>
            <img src="06.jpg" width="240" height="155">
            <p class="name">名前:<span class="cat">ネコ</span></p>
            <p class="type">種類:<span class="mammals">哺乳類</span></p>
            <p class="live">生活:<span class="land">陸上</span></p>
            <p class="color">色:<span class="brown">茶系</span></p>
            <p class="size">大きさ:<span class="middle">中くらい</span></p>
        </li>
        <li>
            <img src="07.jpg" width="240" height="155">
            <p class="name">名前:<span class="butterfly"></span></p>
            <p class="type">種類:<span class="other">その他</span></p>
            <p class="live">生活:<span class="sky"></span></p>
            <p class="color">色:<span class="black">黒系</span></p>
            <p class="size">大きさ:<span class="small">小さい</span></p>
        </li>
        <li>
            <img src="08.jpg" width="240" height="155">
            <p class="name">名前:<span class="cat">ネコ</span></p>
            <p class="type">種類:<span class="mammals">哺乳類</span></p>
            <p class="live">生活:<span class="land">陸上</span></p>
            <p class="color">色:<span class="black">黒系</span></p>
            <p class="size">大きさ:<span class="middle">中くらい</span></p>
        </li>
        <li>
            <img src="09.jpg" width="240" height="155">
            <p class="name">名前:<span class="dog">イヌ</span></p>
            <p class="type">種類:<span class="mammals">哺乳類</span></p>
            <p class="live">生活:<span class="land">陸上</span></p>
            <p class="color">色:<span class="black">黒系</span></p>
            <p class="size">大きさ:<span class="middle">中くらい</span></p>
        </li>
        <li>
            <img src="10.jpg" width="240" height="155">
            <p class="name">名前:<span class="crocodile">ワニ</span></p>
            <p class="type">種類:<span class="reptiles">爬虫類</span></p>
            <p class="live">生活:<span class="water-and-land">水中と陸上</span></p>
            <p class="color">色:<span class="green">緑系</span></p>
            <p class="size">大きさ:<span class="large">大きい</span></p>
        </li>
        <li>
            <img src="11.jpg" width="240" height="155">
            <p class="name">名前:<span class="monkey">サル</span></p>
            <p class="type">種類:<span class="mammals">哺乳類</span></p>
            <p class="live">生活:<span class="land">陸上</span></p>
            <p class="color">色:<span class="brown">茶系</span></p>
            <p class="size">大きさ:<span class="middle">中くらい</span></p>
        </li>
        <li>
            <img src="12.jpg" width="240" height="155">
            <p class="name">名前:<span class="myna">九官鳥</span></p>
            <p class="type">種類:<span class="birds">鳥類</span></p>
            <p class="live">生活:<span class="sky"></span></p>
            <p class="color">色:<span class="black">黒系</span></p>
            <p class="size">大きさ:<span class="small">小さい</span></p>
        </li>
        <li>
            <img src="13.jpg" width="240" height="155">
            <p class="name">名前:<span class="dog">イヌ</span></p>
            <p class="type">種類:<span class="mammals">哺乳類</span></p>
            <p class="live">生活:<span class="land">陸上</span></p>
            <p class="color">色:<span class="white">白系</span></p>
            <p class="size">大きさ:<span class="middle">中くらい</span></p>
        </li>
        <li>
            <img src="14.jpg" width="240" height="155">
            <p class="name">名前:<span class="dog">イヌ</span></p>
            <p class="type">種類:<span class="mammals">哺乳類</span></p>
            <p class="live">生活:<span class="land">陸上</span></p>
            <p class="color">色:<span class="brown">茶系</span></p>
            <p class="size">大きさ:<span class="middle">中くらい</span></p>
        </li>
    </ul>
</div>

</body>

該当のソースコード

$(function() {
    $(document).on('change', '.serchBox select, .serchBox input[type=checkbox]', function() {
        filter_list();
    });

    // リストを絞り込む関数
    function filter_list() {
        var lists = $('.list li');
        lists.show();
        // selectの絞り込み
        for (var i = 0; i < $('.serchBox select').length; i++) {
            // 絞り込みの項目を取得
            var item = $('.serchBox select').eq(i).attr('name');
            // 絞り込みの対象を取得
            var target = $('.serchBox select').eq(i).val();

            if(target != '') {
                for (var j = 0; j < lists.length; j++) {
                    // 絞り込み対象でない場合は非表示
                    if(!lists.eq(j).find('.' + item).find('span').hasClass(target)) {
                        lists.eq(j).hide();
                    }
                };
            }
        }
        // checkboxの絞り込み
        for (var i = 0; i < $('.serchBox .checkboxArea').length; i++) {
            // 絞り込みの項目を取得
            var item = $('.serchBox .checkboxArea').eq(i).find('input:checkbox').attr('name');
            // 絞り込みの対象を取得
            var target = [];
            $('[name=' + item + ']:checked').each(function() {
                target.push($(this).val());
            });

            if(target.length) {
                for (var j = 0; j < lists.length; j++) {
                    // 絞り込み対象かどうかを調べる
                    var showCheck = false;
                    for (var k = 0; k < target.length; k++) {
                        if(lists.eq(j).find('.' + item).find('span').hasClass(target[k])) {
                            showCheck = true;
                        }
                    }
                    // 絞り込み対象でない場合は非表示
                    if(!showCheck) {
                        lists.eq(j).hide();
                    }
                };
            }
        }
    }
});
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • bochan2

    2019/01/02 23:05

    よくここまで頑張りましたね!
    動作させたときにどの様になるかを記述していただくと解決の役に立つと思います

    キャンセル

  • irodory

    2019/01/02 23:22

    ありがとうございます!
    記述したのはサンプルそのままなんです。すみません。

    上記のサンプルでセレクトボックスやチェックボックスにチェックを入れると、HTMLで書いてあるリストの該当項目だけ表示されるようになっています。
    それに、リセットボタンを追加してセレクトボックスとチェックボックスを初期値に戻し、かつHTMLで非表示にされた項目も全部表示されるようにしたいです。
    どうかよろしくお願いします。

    キャンセル

回答 2

check解決した方法

0

作成者様ご本人が回答してくださいました。
下記サイトのコメント欄を参照ください。
http://cly7796.net/wp/javascript/implement-the-process-of-narrowing-down-the-list/

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

<div> ~~~ </div><form></form>の間に入れて最後に<input type="reset" value="リセット">を入れればいいのでは?
サンプル

追記 (12/19)

かなり強引ですがサンプルのようにすればできます。
<input type="reset" value="リセット">ではなく<input type="reset" value="リセット" onclick="window.location.reload();">にするとできます。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/01/04 11:10

    サンプルありがとうございます!
    リセットボタンでチェックボックス等はチェック外れますが、それと同時に非表示にしているコンテンツを全表示するにはどうしたら良いか教えていただけないでしょうか。

    キャンセル

  • 2019/01/04 12:03 編集

    表示されませんか?
    私の環境では全て表示されましたが...

    追記
    表示されませんでした..

    キャンセル

  • 2019/01/04 16:20

    度々ありがとうございます!
    ページをリロードするという発想はありませんでした!
    勉強になります!
    ワガママですが、ページをリロードせずに、リセットボタンを押すと全表示する方法あるでしょうか…。

    キャンセル

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

  • ただいまの回答率 90.03%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる