私はWeb開発とJavaScriptにかなり慣れていません。私のウェブサイトの管理を少し簡単にするために、Javascript を使用してテキスト ファイルから読み取った「ナビゲーション バー」を作成し、各ページの上部に追加することにしました。私が今やろうとしているのは、リンクと「リンクの深さ」を指定してページへの相対リンクを返すことができる関数を作成することです。関数は次のとおりです。
function increaseLinkDepth(aLink, aDepth) {
var result = aLink;
for(i = 0;i < aDepth;i++) {
result = "../" + result;
}
return result;
}
現在、私はデスクトップおよびモバイル デバイスでの開発経験が少しあるので、これは非常に単純な機能です。このように関数を呼び出すと: /increaseLinkDepth("index.html", 1)
、次の結果が得られると予想されます: ../index.html
。サイトでJavaScriptを実行すると、それが得られます。ここで、次のコードで関数を呼び出すと:
var anchors = document.getElementsByTagName("a");
for(i = 0;i < anchors.length;i++) {
var lAnchor = anchors[i];
var lAnchorLink = lAnchor.getAttribute("href");
if(lAnchorLink.substring(0, 4) != "http") {
var newLink = increaseLinkDepth(lAnchorLink, 1);
//alert(newLink);
lAnchor.setAttribute("href", newLink);
}
}
何らかの無限ループに陥り、ブラウザを再起動する必要があります。探しているリンクは次のとおりです。
- index.html
- events.html
- about.html
3 つすべてが見つかりますが、about.html リンクでループが発生します。コードに何かが欠けているかどうかはわかりません (おそらく、コードを長時間見すぎている可能性があります)。しかし、この問題がどこにあるのかわかりません。
今、これがこれを達成するための最良の方法ではないかもしれないことを理解しています.そうでない場合は、お知らせください.HTMLを変更する必要のないナビゲーションバーを作成するには、これが唯一の方法だと思います.すべてのページ。