スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

記事のランダムリンクページ

CATEGORYjavascript
人力検索で、こんな質問が。
FC2ブログをやっているのですが、カテゴリごとのランダムページを作りたいです。
http://q.hatena.ne.jp/1387305611

記事一覧を加工するようなスクリプトを書いてみた。
archives.html?random=true

$(function() {

    var N = 2;  /* 表示する記事の件数 */

    if (document.location.search.indexOf("random=true") < 0) {
        return;
    }

    function pickup(list, n) {
        if (list.length <= n) {
            return list.slice();
        }
        var ret = []
        for (var i = 0 ; i < n ; ++i) {
            var idx = Math.floor(Math.random() * list.length);
            ret.push(list[idx]);
            list.splice(idx, 1);
        }
        return ret;
    }

    var cate = [];
    /* ★ この辺りが、使っているテンプレートによって違ってくる */
    $(".content DIV.list_body").each(function() {
        var link = $("A", this);
        var c = link.get(0);
        var u = link.get(1);
        var list = cate[c.innerHTML];
        if (! list) {
            list = [];
            cate[c.innerHTML] = list;
            cate[c.innerHTML].cate = c;
        }
        list.push(u);
    })

    var target = $(".content").get(0);
    target.innerHTML = "";
    var ul = document.createElement("UL");
    for (var i in cate) {
        var li = document.createElement("LI");
        ul.appendChild(li);
        li.appendChild(cate[i].cate);
        li.className = "randomlist_category";
        var ul2 = document.createElement("UL");
        li.appendChild(ul2);
        var list = cate[i];
        sub = pickup(list, N);
        for (var j in sub) {
            var li2 = document.createElement("LI");
            ul2.appendChild(li2);
            li2.appendChild(sub[j]);
            li2.className = "randomlist_item";
        }
    }

    target.appendChild(ul);

});



二重のリストを構築していくときに、jQuery を使うと、もうちょっとスマートに書けたりするのかな?

元の一覧がチラ見えなのは、ご愛嬌だ orz

関連記事
スポンサーサイト

javascript 人力検索

0 Comments

Leave a comment

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。