4
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

お気に入り登録したページの一覧を表示するjavascript

Last updated at Posted at 2018-02-21

ホームページにお気に入り登録機能を追加する の続編です。今回は、お気に入り登録したページの一覧を表示してみます。

一覧を取得して表示する

一覧を取得して表示するコードです。

function displayFavorites() {
    var favorite_pages = JSON.parse(localStorage.getItem('favorite_pages')); // ローカルストレージから取得する
    var title = 'title';
    var listclass = 'viewhistory';
    listdata = $("<ul></ul>",{
        class: listclass
    });
    $("#favoritelist").text('');
    if (favorite_pages) {
        $("#favoritelist").append(listdata);
        for(i=0;i<10;i++) { // 最大10個まで
            if (favorite_pages[i] && !isNaN(favorite_pages[i]['url'])) { // 要素があるかどうかの判定。(上のforと合わせてコードを改善できるかもしれない)
                textdata = $("<a></a>",{
                    href: CCM_APPLICATION_URL + '/index.php?cID=' + parseInt(favorite_pages[i]['url']),
                    text: favorite_pages[i][title]
                }); // リンクを作成
                removedata = $("<button></button>",{
                    id: parseInt(favorite_pages[i]['url']),
                    text: "お気に入りから削除する",
                    class: "btn btn-primary removedata"
                }); // お気に入りから削除するボタン
                textlist = $("<li></li>").html(textdata);
                textlist.append(removedata);
                $("#favoritelist").children('ul').append(textlist);
            }
        }
    } else {
        $("#favoritelist").text("お気に入りはありません。");
    }
}

この関数displayFavoritesを、読み込み時に実行します。

$( document ).ready(function() {
    displayFavorites();
});

htmlには下記のように記述しておきます。

<h3>お気に入りページ</h3>
<div id="favoritelist"><!-- ここにお気に入り一覧が表示される --></div>

一覧から削除する

一覧から削除するコードです。この部分は前回とよく似ています。

$(document).on("click", ".removedata", function () {
    var favorite_pages_start = JSON.parse(localStorage.getItem('favorite_pages'));
    var favorite_pages = [];
    if (favorite_pages_start) {
        for(i=0;i<10;i++) {
            if (favorite_pages_start[i] && $(this).attr("id") !== favorite_pages_start[i].url) {
                favorite_pages.push(favorite_pages_start[i]);
            }
        }
    }
    localStorage.setItem('favorite_pages',JSON.stringify(favorite_pages));
    displayFavorites();
});

違いとしては、前回は今見ているページをお気に入りから削除、だったのに対して、今回はどのボタンを押したかによって削除するページが変わる点です。
削除するページは、 $(this).attr("id") でページIDを取得して判定しています。

今回のコードは、心理学のための統計入門で実際に活用しています。

4
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?