私はSharepoint wikiを作成しています。各記事には、見出しの見出しを使ってウィキペディアを持っていますが、InterWebzで見つかったjavascriptです。番号付き目次のためのJavascript
<style>
#toc {
display: table;
border: 1px solid #aaa;
background-color: #f9f9f9;
font-size: 95%;
padding: 7px;
}
#toC#tocHeader {
font-weight: bold;
text-align: center;
}
#toc a:before { /* content:"• "; */ }
#toc a { line-height: 15px; margin: 10px; }
#toc .toc_Level1 { margin-left: 5px; }
#toc .toc_Level2 { margin-left: 15px; }
#toc .toc_Level3 { margin-left: 25px; }
#toc .toc_Level4 { margin-left: 35px; }
</style>
<div id="toc"></div>
<script src="https://code.jquery.com/jquery-1.12.3.min.js"></script>
<script type="text/javascript">
function GenerateTOC() {
$("#toc").append('<p id="tocHeader">Contents</p>');
$(".ms-rteElement-H1, .ms-rteElement-H1B, .ms-rteElement-H2, .ms-rteElement-H2B, .ms-rteElement-H3, .ms-rteElement-H3B, .ms-rteElement-H4, .ms-rteElement-H4B").each(function(i) {
var currentNode = $(this);
currentNode.attr("id", "title" + i);
var linkClass = (currentNode.hasClass('ms-rteElement-H1') || currentNode.hasClass('ms-rteElement-H1B'))
? "toc_Level1"
: (currentNode.hasClass('ms-rteElement-H2') || currentNode.hasClass('ms-rteElement-H2B'))
? "toc_Level2"
: (currentNode.hasClass('ms-rteElement-H3') || currentNode.hasClass('ms-rteElement-H3B'))
? "toc_Level3"
: (currentNode.hasClass('ms-rteElement-H4') || currentNode.hasClass('ms-rteElement-H4B'))
? "toc_Level4"
: "";
$("#toc").append("<a id='link'" + i + "' class='" + linkClass + "' href='#title" + i + "' title='" + currentNode.attr("tagName") + "'>" + currentNode.html() + "</a><br>");
currentNode.append(" <a href='#tocHeader'>[top]</a>");
});
}
_spBodyOnLoadFunctionNames.push('GenerateTOC');
</script>
私の意図インデントの各レベルごとに個別の番号内容、例えばのテーブルを作ることです。
1. Heading 1
1.1. Heading 2
1.2. Heading 2
2. Heading 1
2.1. Heading 2
2.2. Heading 2
私は、多かれ少なかれ、このコードで何が起こっているかを理解しますが、私は全く知識がありませんjavascript(またはWeb開発については、正直言って私が現在どのようにしているのか分かりません)ので、実装方法はほとんど分かりません。関数に内部リンクを生成するためのカウンタが既にあることがわかります。
私は、JとKの2つのレベル(インデントのレベルが2つしかない)を追加することになります。Jはレベル1の見出し(Element-H1、toc_Level1)常に増加しますが、レベル1の見出し(Element-H1、toc_Level1)が処理されるたびに0にリセットされますが、そのようにする方法はまったく分かりません。
EDIT:
しかし私は、彼らが唯一の目次の書式設定を定義し、ジャバスクリプトの残りの部分を追加しましたので、私は最初に、関連するそれらを考えるしませんでした。
<span class="ms-rteElement-Name">NAME</span>
<hr/>
<span class="ms-rteElement-Section">Section1</span>
<hr/>
<span class="ms-rteStyle-Text">Stuff</span>
<p><span class="ms-rteElement-Section">Section2</span></p>
<hr/>
<p><span class="ms-rteStyle-Text">Fluff</span></p>
<p><span class="ms-rteElement-H1">Heading 1</span></p>
<p><span class="ms-rteStyle-Text">Fluff</span></p>
<p><span class="ms-rteElement-H2">Heading 2</span></p>
<p><span class="ms-rteStyle-Text">Fluff</span></p>
<p><span class="ms-rteElement-H2">Heading 2</span></p>
<p><span class="ms-rteStyle-Text">Fluff</span></p>
<p><span class="ms-rteElement-H1">Heading 1</span></p>
<p><span class="ms-rteStyle-Text">Fluff</span></p>
<p><span class="ms-rteElement-H2">Heading 2</span></p>
<p><span class="ms-rteStyle-Text">Fluff</span></p>
<p><span class="ms-rteElement-H2">Heading 2</span></p>
<p><span class="ms-rteStyle-Text">Fluff</span></p>
<span class="ms-rteElement-Section">Section3</span>
<hr/>
<p><span class="ms-rteStyle-Text">More fluff</span></p>
上記のようスクリプトがちょうどコースの先行番号のない、完全に目次を生成します。次のように
ウェブサイトが構成されています。
wikiにページの例を挙げることはできますか?それはそれで動作する関数を書くのが少し簡単になります。 – DoMiNeLa10
問題を再現できるほどの[mcve]コードを投稿してください。 –
追加情報で変更されています。 – Eleshar