document.write(window.activeTab); を含むスクリプト リンクをクリックする前に十分に実行されています。そうしないと、ドキュメント全体が上書きされます。これは、DOM が既に読み込まれている場合に document.write が行うことだからです。
リンク window.activeTab をクリックする前に実行しているため、まだ値が割り当てられていません。
これには多くの解決策がありますが、必要な解決策は、実際に何をしたいのかによって異なりますactiveTab
。それだけでなく、本当に何かに使いたいと思っていると思いますdocument.write
。
アップデート
の値に基づいて画像を更新したいようですwindow.activeTab
。画像を更新するコードは、ページの読み込み時ではなく、リンクがクリックされたときに実行されるように、onclick ハンドラーにも含める必要があります。いくつかの理由で回避する必要がありますdocument.write
が、最も明白なのは、既に述べたとおりです。使用時にページが既に読み込まれている場合、ドキュメント全体が上書きされます。
次のようなことを試してみてください。
<a href="#tab1" class="tabs">LinkName</a>
そして、タブの HTML の後のページのどこかに:
<script>
(function(){
var tabs = document.getElementsByClassName('tabs');
// For each tab
for(var i = tabs.length; i--;){
// Add click handler to tab
tabs[i].onclick = switch_tab;
// Hide tab
a_to_tab(tabs[i]).style.display = 'none';
}
// Show first tab
a_to_tab(tabs[0]).style.display = '';
function switch_tab(){
// Hide all tabs
for(var j = tabs.length; j--;){
a_to_tab(tabs[j]).style.display = 'none';
}
// Show this tab
a_to_tab(this).style.display = '';
// Cancel default onclick action
return false;
}
// Get the tab element from the a element that refers to it by href
function a_to_tab(a){
return document.getElementById(a.href.replace(/^[^#]*#/, ''));
}
})();
</script>
このJSFiddleを参照してください。
jQuery UI Tabsもチェックしてみてください。