添加href URL字符串

时间:2019-04-15 06:08:15

标签: javascript href

我需要使用Java脚本对页面上的所有超链接进行更改。目前,标签已放置在此样式中

<a href="/Level1/Level2/Level3/bla bla bla.aspx"

我真正在努力的改变(在这个领域绝对是菜鸟)是我如何进行以下改变并增加另一个层次?其子站点具有相同的结构;

<a href="/Level1/Level2/Level3/+Level4/bla bla bla.aspx" 

添加“级别4”之前和之后的URL部分将保持不变。我需要将此更改应用于页面上尚不存在第4级部分的所有超链接。

道歉要求。第一次发布。

3 个答案:

答案 0 :(得分:1)

获取所有hrefs-如果href没有必需的4级,则使用简单的.replace()和添加的级别添加该级别-然后应用为href属性。

请注意,链接1和3没有级别4,因此会受到if条件的影响,因此链接2已经拥有它,因此不会受到影响。

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>

答案 1 :(得分:0)

尝试

document.querySelectorAll('a').forEach(a=> 
 a.href= a.href.replace(/(\/Level1\/Level2\/Level3)(?!\/Laravel4)/,"$1/+Laravel4"));

正则表达式说明

  • (\/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>

答案 2 :(得分:0)

location.href为您提供了网址,

var currentUrl= location.href;
currentUrl = currentUrl.replace("level1","level1/level2")
location.href = currentUrl;

我不清楚您的理解,但这需要解决您的问题。