我需要使用Java Script对页面上的所有超链接进行更改。目前,标签是以这种方式布局的
<a href="/Level1/Level2/Level3/bla bla bla.aspx"我真正苦苦挣扎的变化(作为这个领域的绝对新手)是我如何进行以下更改并添加到另一个级别?具有相同结构的子网站;
<a href="/Level1/Level2/Level3/+Level4/bla bla bla.aspx" 添加“4级”之前和之后的URL部分将保持不变。我需要将此更改应用于页面上的所有超链接,这些超链接不存在级别4部分。
对这个令人震惊的请求深表歉意。第一次发帖。
发布于 2019-04-15 14:16:14
获取所有的href -如果href没有所需的级别4,则使用简单的.replace()和添加的级别添加级别-然后作为href属性应用。
请注意,链接1和3没有级别4,因此将受到if条件的影响,而链接2已经具有级别4,因此不会受到影响。
let links = document.querySelectorAll('a');
links.forEach(function(link) {
let originalHref = link.getAttribute('href');
if(originalHref.indexOf('+Level4') == -1) {
link.setAttribute('href', originalHref.replace('Level3/','Level3/+Level4/'));
}
})a {
display: block;
margin-bottom: 8px;
}<a href="/Level1/Level2/Level3/option1.aspx">Option 1</a>
<a href="/Level1/Level2/Level3/+Level4/option2.aspx">Option 2</a>
<a href="/Level1/Level2/Level3/option3.aspx">Option 3</a>
发布于 2019-04-15 14:28:04
试一试
document.querySelectorAll('a').forEach(a=>
a.href= a.href.replace(/(\/Level1\/Level2\/Level3)(?!\/Laravel4)/,"$1/+Laravel4"));regexp解释
(\/Level1\/Level2\/Level3)查找带有前缀的链接(组$1)(?!\/Laravel4)但不包含Laravel4"$1/+Laravel4"将匹配的字符串(组$1)替换为带有后缀的组$1
document.querySelectorAll('a').forEach(a=>
a.href= a.href.replace(/(\/Level1\/Level2\/Level3)(?!\/Laravel4)/,"$1/+Laravel4"));
// INFO
document.querySelectorAll('a').forEach(a=>console.log(a.href));<a href="/Level1/Level2/Level3/bla bla bla.aspx">link 1</a>
<a href="/Level1/Level2/Level3/Laravel4/terefere.aspx">link 2</a>
<a href="/Level1/Level2/Level3/zzzz.aspx">link 3</a>
发布于 2019-04-15 15:14:15
location.href是为您提供的tu url:
var currentUrl= location.href;
currentUrl = currentUrl.replace("level1","level1/level2")
location.href = currentUrl;我不太明白你的意思,但这需要解决你的问题。
https://stackoverflow.com/questions/55683371
复制相似问题