[英]Generating href from list item text
UPDATED : 更新时间 :
I have a sidebar which extracts all existing h3 tags and displays the text in a list. 我有一个侧边栏,可提取所有现有的h3标签并在列表中显示文本。 I would like these list items to have the same id and href as the text.
我希望这些列表项具有与文本相同的ID和href。
Example list item: 清单项目示例:
Current: <li>Heading One</li>
当前:
<li>Heading One</li>
Desired: <li id="heading-one"><a href="#heading-one">Heading One</li>
所需:
<li id="heading-one"><a href="#heading-one">Heading One</li>
HTML: HTML:
<div id="content">
<h3 id="example-one">Example One</h3>
<h3 id="example-two">Example Two</h3>
<h3 id="example-three">Example Three</h3>
</div>
<div id="sidemenu-container">
<div class="wpb_wrapper">
<div class="wpb_wrapper">
</div>
</div>
</div>
JavaScript: JavaScript:
jQuery(function($) {
$(document).ready(function(){
// Create array from h3s found in main content
let nodeList = document.getElementById('content').querySelectorAll('h3');
let list = [];
nodeList.forEach(function(val){
list.push(val.innerHTML)
})
// Create unordered list
var ul = document.createElement('ul');
// Append unordered list to sidebar
document.getElementById('sidemenu-container').getElementsByClassName("wpb_wrapper")[1].appendChild(ul).id = "top-menu";
// Append list items to unordered list
list.forEach(function(title){
var li = document.createElement('li');
ul.appendChild(li);
li.innerHTML += title;
});
});
});
Desired result: 所需结果:
<div id="content">
<h3 id="example-one">Example One</h3>
<h3 id="example-two">Example Two</h3>
<h3 id="example-three">Example Three</h3>
</div>
<div id="sidemenu-container">
<div class="wpb_wrapper">
<ul>
<li><a href="#example-one">Example One</a></li>
<li><a href="#example-two">Example Two</a></li>
<li><a href="#example-three">Example Three</a></li>
</ul>
</div>
</div>
JSFiddle: JSFiddle:
https://codepen.io/Crawlinson/pen/OJLjyGe https://codepen.io/Crawlinson/pen/OJLjyGe
add this you solution 添加此解决方案
li.innerHTML += "<a href=#"+title.replace(' ','-').toLowerCase()+">"+title+"</a>";
https://jsfiddle.net/t5dw0qh7/1/ https://jsfiddle.net/t5dw0qh7/1/
jQuery(function($) { $(document).ready(function(){ // Create array from h3s found in main content let nodeList = document.getElementById('content').querySelectorAll('h3'); let list = []; nodeList.forEach(function(val){ list.push(val.innerHTML) }) // Create unordered list var ul = document.createElement('ul'); // Append unordered list to sidebar document.getElementById('sidemenu-container').getElementsByClassName("wpb_wrapper")[1].appendChild(ul).id = "top-menu"; // Append list items to unordered list list.forEach(function(title){ var li = document.createElement('li'); ul.appendChild(li); li.innerHTML += "<a href=#"+title.replace(' ','-').toLowerCase()+">"+title+"</a>"; }); }); });
<script src="https://code.jquery.com/jquery-1.11.2.min.js" type="text/javascript"></script> <div id="content"> <h3>Example One</h3> <h3>Example Two</h3> <h3>Example Three</h3> </div> <div id="sidemenu-container"> <div class="wpb_wrapper"> <div class="wpb_wrapper"> </div> </div> </div>
jQuery(function($) {
$(document).ready(function(){
// Create array from h3s found in main content
let nodeList = document.getElementById('content').querySelectorAll('h3');
let list = [];
nodeList.forEach(function(val){
list.push(val.innerHTML)
})
// Create unordered list
var ul = document.createElement('ul');
// Append unordered list to sidebar
document.getElementById('sidemenu-container').getElementsByClassName("wpb_wrapper")[1].appendChild(ul).id = "top-menu";
// Append list items to unordered list
list.forEach(function(title){
var li = document.createElement('li');
var a = document.createElement('a');
var id = title.toLowerCase().split(" ").join('-');
ul.appendChild(li);
a.href = "#" + id;
li.id = id
a.innerHTML += title;
li.appendChild(a);
});
});
});
This is the exact solution of your problem 这是您问题的确切解决方案
<script type="text/javascript">
jQuery(function($) {
$(document).ready(function(){
// Create array from h3s found in main content
let nodeList = document.getElementById('content').querySelectorAll('h3');
let list = [];
nodeList.forEach(function(val){
list.push(val.innerHTML)
})
// Create unordered list
var ul = document.createElement('ul');
// Append unordered list to sidebar
document.getElementById('sidemenu-container').getElementsByClassName("wpb_wrapper")[1].appendChild(ul).id = "top-menu";
console.log("list" , list);
// Append list items to unordered list
list.forEach(function(title){
var li = document.createElement('li');
ul.appendChild(li);
var a = document.createElement('a');
li.appendChild(a);
title = title.split(" ").join("-");
var id1 = "#" + title;
$(a).attr('id', id1);
a.innerHTML += title;
});
});
});
</script>
Hope it works . 希望它能起作用。 PLease check it out .
请检查一下 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.