Yaruyomiとかの雑談スレ

レス数:1000 サイズ:250.91 KiB 最終更新日:2018-04-28 03:36:10

93  名前:◆Y0H0G.GOFk[sage] 投稿日:2014/08/01(Fri) 21:40:44 ID:f966e294
Yaruyomi メモ。
Yaruyomi のまとめページで実行すると、抽出した ID がタイトル下に表示され、
チェック ON OFF で表示非表示を切り替えられるようになる。
IE は 10 以上じゃないと動かない、もっと綺麗に書きたいな。組み込むかは未定。

var res = document.querySelectorAll('p[id^=res]');
var ids = {}
for (var i = 0; i < res.length; i++) {
var tmp = res[i].innerHTML.match('(ID:</span>|ID:)([A-Za-z0-9_\/\.\-]+)');
if (tmp != null && tmp.length > 2) {
if (typeof ids[tmp[2]] === 'undefined') {
ids[tmp[2]] = []
}
ids[tmp[2]].push(res[i].id)
} else {
// 抽出できていないレス
console.log(res[i].innerHTML);
}
}

var elements = [];
var div = document.createElement('div');
for (var i in ids) {
var p = document.createElement('p');
var id = 'chid-' + (elements.length + 1);
p.innerHTML = '<label for="' + id + '"><input type="checkbox" id="' + id + '" value="' + i + '">' + i + ' (' + ids[i].length + ')';
p.querySelector('input').addEventListener('change', function changeFunc() {
if (typeof ids[this.value] === 'object') {
if (this.checked) {
for (var i in ids[this.value]) {
document.getElementById(ids[this.value][i]).classList.add('display-none');
}
} else {
for (var i in ids[this.value]) {
document.getElementById(ids[this.value][i]).classList.remove('display-none');
}
}
}
});
elements.push({'count': ids[i].length, 'p': p})
}

elements.sort(function (a, b) {
if (a['count'] > b['count']) {
return -1;
} else if (a['count'] < b['count']) {
return 1;
}
return 0;
});

for (var i in elements) {
div.appendChild(elements[i]['p']);
}

var style = document.createElement('style');
style.innerHTML = '.display-none { display: none !important; }';
document.getElementById('episode-article').insertBefore(div, document.getElementById('episode-article').getElementsByTagName('h1')[0].nextSibling);
document.body.appendChild(style);