ページの左側にいくつかのリンクがある場合、リンクをクリックしたときに同じページに別の HTML ファイルのコンテンツを表示するにはどうすればよいですか?
1 に答える
簡単な解決策: iframe
s、より良いが少し難しい解決策: AJAX
.
iFrame
iframe を作成するには、ソース コードに次のように記述します<iframe src="the/URL/of/a/page.html"></iframe>
。これにより、ファイルthe/URL/of/a/page.html
が iframe に表示されます。iframe は CSS でスタイルを設定できます (参考までに)。次に、すべての<a>
sa クラスを指定します。link
例として JavaScript を使用し、iframe に ID を指定しました (私は を使用しましたiframe
)。(JS AFAIKなしでそれを行う方法はありません。または、<frameset>
非推奨の a を使用する必要があります。)JSの例:var links = document.getElementsByClassName("link"); // Get all the elements with the class link for (var i; i < links.length; i++) { // Loop over all the links links[i].onclick = function(e) { // Tell them what to do when they're clicked e.preventDefault(); // Prevent the browser from navigating to the address of the links href document.getElementById("iframe").src = links[i].href; // Set the iframe's src to the href of the a. } }
AJAX
これは少し難しく、jQueryのようなライブラリを使用すると、このタスクが大幅に簡素化されます。私の例では jQuery を使用しています。それ以外の場合は、さらに多くのコード行が必要になります。読み込まれたページを表示し、ページに配置して ID を付与するには、
が必要です(この例では使用しました)。ソリューションとは対照的に、AJAXは通常、同じドメインのファイルでのみ機能することに注意してください(ただし、SOでいくつかの回避策/ハックを見たと思います)。例:div
resultbox
iframe
$(".link").click(function(e) { // If an element with the class 'link' get's clicked... e.preventDefault(); $("#resultbox").load("the/URL/of/a/page.html"); // ... load the contents of the file at the/URL/of/a/page.html into the element with the ID 'resultbox' });
注:私はこれをテストしませんでした。