Html 哪个javascript库或框架支持;“目录”;一代
我正在寻找从HTML(带有锚)动态生成javascript“目录” 例如:Html 哪个javascript库或框架支持;“目录”;一代,html,javascript,javascript-framework,Html,Javascript,Javascript Framework,我正在寻找从HTML(带有锚)动态生成javascript“目录” 例如: <h1>First level1 heading</h1> lorem ipsum <h2>1a heading</h2> lorem ipsum <h2>1b heading</h2> lorem ipsum <h1>Second level1 heading</h1> lorem ipsum 链接到标题的行以及原始htm
<h1>First level1 heading</h1>
lorem ipsum
<h2>1a heading</h2>
lorem ipsum
<h2>1b heading</h2>
lorem ipsum
<h1>Second level1 heading</h1>
lorem ipsum
链接到标题的行以及原始html都应该返回并插入锚
大型javascript库或框架中是否包含一些内容
如果他们都没有,有人看到过一个好的JS模块吗?是你的朋友,有这个插件:。主页是是您的朋友,使用此插件:。主页是这是一个非常简单的问题,可以用10-20行函数来解决。不需要框架。可以使用getElementsByTagName('h1')、getElementsByTagName('h2')遍历DOM,也可以使用正则表达式。加载框架会带来性能影响和风险,因此我建议不要为简单的问题安装框架。这是一个非常简单的问题,可以通过10-20行函数来解决。不需要框架。可以使用getElementsByTagName('h1')、getElementsByTagName('h2')遍历DOM,也可以使用正则表达式。加载框架会带来性能影响和风险,因此我建议不要为简单的问题安装框架。自己动手,我写道:),希望能有所帮助 添加一个div元素作为body元素的第一个子元素,并提供一个id作为“tableOfContents” 并将下面的脚本添加为body元素的最后一个子元素
<script>
var el = document.getElementsByTagName("*") || [];
var toc = "<ul>";
var lvl = 1;
for(var i=0;i<el.length;i++)
{
var ce = el[i];
var tag = ce.tagName + "";
var m = tag.match(/^h([1-5])$/i);
if(m)
{
var n = Number(m[1]);
if(lvl > n)
{
while(lvl-->n)toc+="</ul></li>";
}else if(lvl < n){
while(lvl++<n)toc+="<li style='list-style:none'><ul>";
}
toc += '<li><a href="#toc_' + i + '">' +
(ce.innerText || ce.text()) +
'</a></li>';
var ta = document.createElement("div");
ta.innerHTML = '<a name="toc_' + i + '" />';
ce.insertBefore(ta, ce.firstChild);
}
}
while(lvl-->1)toc+="</ul></li>";
toc+="</ul>";
document.getElementById("tableOfContents").
innerHTML = toc;
</script>
var el=document.getElementsByTagName(“*”)||[];
var toc=“”;
var-lvl=1;
对于(变量i=0;i n)
{
而(lvl-->n)toc+=“
”;
}否则如果(lvl”;
toc+=“”;
getElementById(“目录”)。
innerHTML=toc;
这个脚本将检测每个H(1到5)并生成您的目录自己制作,我写的:),希望有帮助 添加一个div元素作为body元素的第一个子元素,并提供一个id作为“tableOfContents” 并将下面的脚本添加为body元素的最后一个子元素
<script>
var el = document.getElementsByTagName("*") || [];
var toc = "<ul>";
var lvl = 1;
for(var i=0;i<el.length;i++)
{
var ce = el[i];
var tag = ce.tagName + "";
var m = tag.match(/^h([1-5])$/i);
if(m)
{
var n = Number(m[1]);
if(lvl > n)
{
while(lvl-->n)toc+="</ul></li>";
}else if(lvl < n){
while(lvl++<n)toc+="<li style='list-style:none'><ul>";
}
toc += '<li><a href="#toc_' + i + '">' +
(ce.innerText || ce.text()) +
'</a></li>';
var ta = document.createElement("div");
ta.innerHTML = '<a name="toc_' + i + '" />';
ce.insertBefore(ta, ce.firstChild);
}
}
while(lvl-->1)toc+="</ul></li>";
toc+="</ul>";
document.getElementById("tableOfContents").
innerHTML = toc;
</script>
var el=document.getElementsByTagName(“*”)||[];
var toc=“”;
var-lvl=1;
对于(变量i=0;i n)
{
而(lvl-->n)toc+=“
”;
}否则如果(lvl”;
toc+=“”;
getElementById(“目录”)。
innerHTML=toc;
此脚本将检测每个H(1到5)并生成您的目录发布您希望从中生成目录的html。这是任何大型库中的10行脚本。只需使用h1、h2……标记。我在问题中插入了一个示例。发布您希望从中生成目录的html。这是任何bi中的10行脚本g库。只应使用h1、h2,…标记。我在问题中插入了一个示例。使用getElementsByTagName不起作用-因为您将对每个元素类型进行集群,而不是按交错顺序获取它们…并且已经有足够多的评论说明了使用正则表达式解析HTML的危险。使用getElementsByTagName不起作用——因为你会对每个元素类型进行集群,而不是按交错顺序进行……而且已经有足够多的评论指出了用正则表达式解析HTML的危险性。