简体   繁体   English

从列表项文本生成href

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM