1496264259 質問させて下さい。

http://q.hatena.ne.jp/1449280991
上記質問のa-kuma3さんの回答を使わせて頂いているのですが、以下のような改造は出来ないでしょうか。

1)親カテゴリを表示させない
2)子カテゴリの【】内文字列を表示させない

自分で色々と試したのですが、上手くいかず質問させて頂きます。
宜しくお願い致します。

回答の条件
  • 1人1回まで
  • 13歳以上
  • 登録:2017/06/01 05:57:39
  • 終了:2017/06/01 23:06:45

ベストアンサー

id:psne No.1

ぽけっとしすてむ回答回数512ベストアンサー獲得回数2862017/06/01 22:37:40

ポイント100pt

こちらでいかがでしょうか。
※以下のコードは http://q.hatena.ne.jp/1449280991#a1253343 の2つ目のコードを改変しています。

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script>
(function($) {

$(function() {
    var re = /【(.*)】.*\((.*)\)/;
    var forEach = Array.prototype.forEach;
    var cat_name_map = {};
    forEach.call(document.querySelectorAll("div.hatena-module-category ul.hatena-urllist li a"), function(a) {
        var match = re.exec(a.textContent);
        if (match) {
            var cat = match[1];
            var ar = cat_name_map[cat];
            if (! ar) {
                ar = [0, 0];
            }
            ar[0] += 1;
            ar[1] += parseInt(match[2]);
            cat_name_map[cat] = ar;
        }
    });
    var cat_node_map = {};
    forEach.call(document.querySelectorAll("div.hatena-module-category ul.hatena-urllist li a"), function(a) {
        var match = re.exec(a.textContent);
        if (match) {
            var cat = match[1];
            if (cat_name_map[cat][0] > 1) {
                var original_item = a.parentNode;
                var new_item = document.createElement("LI");
                new_item.innerHTML = original_item.innerHTML;
/* 追加個所 */
                var new_item_innerlink = new_item.querySelector("a");
                new_item_innerlink.textContent = new_item_innerlink.textContent.split(/【.*】/,2)[1];
/* 追加個所 */

                new_item.style.paddingLeft = "2em";
                var sub_category_list = cat_node_map[ cat ];
                if (! sub_category_list) {
                    /*
                        LI : original_item
                            |
                            V
                        LI : sub_category_parent
                            SPAN : arrow
                            SPAN : label
                            UL : sub_category_list
                                LI : new_item
                    */
                    removeParentCategory(original_item.parentNode,cat);
                    var sub_category_parent = document.createElement("LI");
                    original_item.parentNode.insertBefore(sub_category_parent, original_item);
                    var arrow = document.createElement("SPAN");
                    arrow.innerHTML = "&#9654;";
                    arrow.style.marginRight = "0.5ex";
                    arrow.style.cursor = "pointer";
                    arrow.onclick = function() {
                        var sub_category_list = this.nextSibling.nextSibling;
                        if (sub_category_list.style.display == "none") {
                            this.innerHTML = "▼";
                            sub_category_list.style.display = "";
                        } else {
                            this.innerHTML = "&#9654;";
                            sub_category_list.style.display = "none";
                        }
                    };
                    sub_category_parent.appendChild(arrow);
                    var label = document.createElement("SPAN");
                    label.innerHTML = cat + " (" + cat_name_map[cat][1] + ")";
                    label.style.textDecoration = "underline";
                    label.style.color = "#0E4B84";
                    label.style.cursor = "pointer";
                    label.onclick = function() {
                        this.previousSibling.onclick();
                    };
                    sub_category_parent.appendChild(label);
                    sub_category_list = document.createElement("UL");
                    sub_category_list.style.display = "none";
                    sub_category_parent.appendChild(sub_category_list);
                    cat_node_map[ cat ] = sub_category_list;
                }
                sub_category_list.appendChild(new_item);
                original_item.parentNode.removeChild(original_item);
            }
        }
    });
/* 追加個所 */
    function removeParentCategory(nodeLists,target){
        var matchExp = new RegExp("^" + target + " \\(([0-9]+)\\)");
        forEach.call(nodeLists.querySelectorAll("div.hatena-module-category ul.hatena-urllist li a"), function(a) {
            if(a.innerText.match(matchExp)){
                a.parentElement.style.display = "none"; // 念のため display:none とする
            }
        });
    }
/* 追加個所 */

});

})(jQuery);
</script>
id:nuruta

ありがとうございます。
希望通りのものです。
ぽけっとしすてむさん、誠にありがとうございました。

2017/06/01 23:06:26

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません