似乎无法从函数中提取值...看起来很简单,但无法执行。我认为这是一个异步问题,但即使使用 async:false;它仍然返回未定义。
<script type="text/javascript">
var activeTab;
function toggleVisibility(selectedTab) {
//Let the navigation know what tab is selected
activeTab = selectedTab;
return activeTab;
}
</script>
<script type="text/javascript">
document.write(window.activeTab);
</script>
这是对该函数的调用
<a href="#" onclick="toggleVisibility('linkname');">LinkName</a>
最佳答案
您的脚本包含 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
关于javascript - 从函数中取出 var,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11002773/