用正则表达式“修复”类的所有href的JavaScript

时间:2018-12-10 14:58:02

标签: javascript

说我在页面上有很多链接,例如:

<a class="eg-vimeo1-element-0 eg-post-14" href="http://255972693" target="_self"><i class="eg-icon-play"></i></a>

我想将每个http://255972693更改为https://vimeo.com/video/255972693

我尝试这样做是为了查看我的hrefs:

let e = document.getElementsByClassName("eg-vimeo1-element-0");
for (var i = 0; i < e.length; i++){
  console.log(e[i].href);
  console.log(e[i].href.replace("http://", "https://vimeo.com/video"));
}
<a class="eg-vimeo1-element-0 eg-post-14" href="http://255972693" target="_self"><i class="eg-icon-play"></i></a>

但是它将href转换为IP并给出类似结果

http://vimeo.com/video/15.65.213.85/

3 个答案:

答案 0 :(得分:6)

如果在href属性上使用getAttribute,它将起作用。

const e = document.getElementsByClassName("eg-vimeo1-element-0")

for (var i = 0; i < e.length; i++) {
  const href = e[i].getAttribute('href');
  e[i].href = href.replace("http://", "https://vimeo.com/video/");
}
<a class="eg-vimeo1-element-0 eg-post-14" href="http://255972693">link</a>

这里是updated jsFiddle

并保留“黑暗绝对赦免”的评论,以防评论消失:

  

“之所以起作用,而.href不起作用的原因是,.href是解析的URL,而http://1234567被解释为十进制形式的IP地址。”

答案 1 :(得分:2)

请尝试以下操作:

let e = document.getElementsByClassName("eg-vimeo1-element-0");
for (var i = 0; i < e.length; i++){
  var href = e[i].getAttribute('href');
  console.log('previous href: ', href);
  
  e[i].setAttribute('href', href.replace("http://", "https://vimeo.com/video/"));
  
  console.log('new href:', e[i].getAttribute('href'));
}
<a class="eg-vimeo1-element-0 eg-post-14" href="http://255972693" target="_self"><i class="eg-icon-play"></i></a>

答案 2 :(得分:1)

尝试使用getAttribute

let e = document.getElementsByClassName("eg-vimeo1-element-0");
 for (var i = 0; i < e.length; i++){
  var url = e[i].getAttribute('href');
  alert(url.replace("https://", "https://vimeo.com/video/"));

}