说我在页面上有很多链接,例如:
<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/
答案 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/"));
}