我将为大约30页设置一个模板,这意味着我不能使用绝对URL,但是每页的结构和父级将是相同的(它将仅包含不同的信息)。我找不到将相对URL与锚标记结合在一起的方法,但是我确实使用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}`;
}

09-16 10:26