Javascript 更改<;李>;如果在链接名中找到特定字符,则标记列表结构
我有一个列表代码Javascript 更改<;李>;如果在链接名中找到特定字符,则标记列表结构,javascript,jquery,replace,find,Javascript,Jquery,Replace,Find,我有一个列表代码 <div id="nav"> <ul> <li><a href="https://"> Home </a></li> <li><a href="https://"> Profile </a></li> <li><a href="https://"> _Vision </a></li&
<div id="nav">
<ul>
<li><a href="https://"> Home </a></li>
<li><a href="https://"> Profile </a></li>
<li><a href="https://"> _Vision </a></li>
<li><a href="https://"> _Mission </a></li>
</ul>
</ul>
</div>
如果链接名中有一个字符(不带引号),则代码列表的结构将是一个子菜单,并输入标记列表以前具有的子类
<div id="nav">
<ul>
<li><a href="https://"> Home </a> </li>
<li class="has-sub"><a href="https://"> Profile </a>
<ul class="sub-menu">
<li><a href="https://"> Vision </a></li>
<li><a href="https://"> Mission </a></li>
</ul>
</li>
</ul>
</div>
-
如何让javascript代码能够执行它,因为我还在学习阶段使用javascript代码或jQuery。
我非常感谢他的帮助。您可以创建一个wrap函数,该函数只需将
li
标记与ul.子菜单
标记(如果其文本以开头)
函数换行(节点){
设ul=document.createElement(“ul”);
ul.className=“子菜单”;
node.textContent=node.textContent.trim().substr(1,node.textContent.length);
node.parentNode.insertBefore(ul,node);
let inserted=node.previousElementSibling.appendChild(节点);
$(插入).parent().prev(“li”).addClass(“has sub”);
}
$(“ul>li>a”)。每个((索引,ele)=>{
如果(ele.textContent.trim().charAt(0)=“u389;”){
包装(ele.parentNode);
}
});代码>
let子菜单=null
Array.from(document.getElementById('nav').children[0].children)
.地图(
职能(e){
if(e.children[0].textContent.charAt(0)='\u0'){
如果(!子菜单){
子菜单=document.createElement('ul')
}
e、 子[0]。textContent=e.children[0]。textContent.substring(1)
子菜单.附加子菜单(e)
}否则{
如果(子菜单){
e、 previousSibling.replaceWith(子菜单)
子菜单=空
}
}
}
)
如果(子菜单){
document.getElementById('nav').children[0]。lastChild.replaceWith(子菜单)
}
Wow太好了,有可能删除链接名中的“u”吗?@ATLM已调整。谢谢@zfrish如果配置文件中包含类子菜单li标记怎么办?