Hide TopCoder problem archive categories

Hides the category list in the topcoder problem archive, because knowing the categories of a problem can spoil the solution! (The categories are replaced with '...', click on them to toggle hidden-ness.)

スクリプトをインストールするには、Tampermonkey, GreasemonkeyViolentmonkey のような拡張機能のインストールが必要です。

スクリプトをインストールするには、TampermonkeyViolentmonkey のような拡張機能のインストールが必要です。

スクリプトをインストールするには、TampermonkeyViolentmonkey のような拡張機能のインストールが必要です。

スクリプトをインストールするには、TampermonkeyUserscripts のような拡張機能のインストールが必要です。

このスクリプトをインストールするには、Tampermonkeyなどの拡張機能をインストールする必要があります。

このスクリプトをインストールするには、ユーザースクリプト管理ツールの拡張機能をインストールする必要があります。

(ユーザースクリプト管理ツールは設定済みなのでインストール!)

このスタイルをインストールするには、Stylusなどの拡張機能をインストールする必要があります。

このスタイルをインストールするには、Stylus などの拡張機能をインストールする必要があります。

このスタイルをインストールするには、Stylus tなどの拡張機能をインストールする必要があります。

このスタイルをインストールするには、ユーザースタイル管理用の拡張機能をインストールする必要があります。

このスタイルをインストールするには、ユーザースタイル管理用の拡張機能をインストールする必要があります。

このスタイルをインストールするには、ユーザースタイル管理用の拡張機能をインストールする必要があります。

(ユーザースタイル管理ツールは設定済みなのでインストール!)

このスクリプトの質問や評価の投稿はこちら通報はこちらへお寄せください
// ==UserScript==
// @name        Hide TopCoder problem archive categories
// @namespace   kunaifirestuff
// @description Hides the category list in the topcoder problem archive, because knowing the categories of a problem can spoil the solution! (The categories are replaced with '...', click on them to toggle hidden-ness.)
// @include     http://community.topcoder.com/tc?module=ProblemArchive*
// @version     1
// @grant       none
// ==/UserScript==

var table = document.getElementsByTagName('b') [0].parentElement.parentElement.parentElement.parentElement;
var categoryArray = new Array(table.childElementCount - 9);
var hiddenText = '...';

for (var i = 3; i < table.childElementCount - 6; i++) {
  (function (i) {
    var cats = table.children[i].children[5];
    
    categoryArray[i - 3] = cats.textContent;
    cats.textContent = hiddenText;
    cats.setAttribute('align', 'center');
    
    cats.addEventListener('click', function () {
      if (cats.textContent == hiddenText) {
        cats.textContent = categoryArray[i - 3];
      } else {
        cats.textContent = hiddenText;
      }
    });
  }(i));
}