您的脚本包含 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 选项卡