我正在为大约 30 个页面设置一个模板,这意味着我不能使用绝对 URL,但每个页面的结构和父页面将是相同的(它只是包含不同的信息)。我找不到将相对 URL 与 anchor 标记组合在一起的方法,但我确实设法使用 Javascript 来完成此操作。我觉得我已经把它完全复杂化了,尽管它有效,但一定有更好的方法。 这是我的 JS,它在结束 body 标记之前执行。
var url = window.location.href;
var file = url.split('?')[0];
var pathanddomain = file.split('/');
var path = pathanddomain.splice(1, pathanddomain.length-1);
var pathIndexToGet = 3;
var anchor1 = '../' + (path[pathIndexToGet]) + '#sec1';
var anchor2 = '../' + (path[pathIndexToGet]) + '#sec2';
var anchor3 = '../' + (path[pathIndexToGet]) + '#sec3';
var anchor4 = '../' + (path[pathIndexToGet]) + '#sec4';
var link1 = document.getElementById('seclink1');
var link2 = document.getElementById('seclink2');
var link3 = document.getElementById('seclink3');
var link4 = document.getElementById('seclink4');
link1.href = anchor1;
link2.href = anchor2;
link3.href = anchor3;
link4.href = anchor4;
以及它所引用的 HTML:
<a id="seclink1">Section 1</a>
<a id="seclink2">Section 2</a>
<a id="seclink3">Section 3</a>
<a id="seclink4">Section 4</a>
这是完成此任务的最有效方法吗?
将其组合成一行是否会比频繁使用变量更高效?即
document.getElementById('seclink1').href = '../' + (path[pathIndexToGet]) + '#sec1';
最佳答案
很简单,例如:
var url = location.pathname;
var anchor = url.split("/").pop();
for(var i=1;i<5;i++){
document.getElementById(`seclink${i}`).href = '../' + anchor + `#sec${i}`;
}
关于javascript - 访问相对 URL 上的 anchor ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60133455/