javascript - 从函数中取出 var

标签 javascript function global variables

似乎无法从函数中提取值...看起来很简单,但无法执行。我认为这是一个异步问题,但即使使用 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/

相关文章:

JavaScript:带有 vars 的自定义属性

javascript - 从 MySQL 到 IndexedDB

ios - 延迟更改 UIImageView.image

Javascript 函数 - 通过引用复制,但是这里发生了什么?

javascript - 如何使用 JavaScript/jQuery 删除/禁用 scrollTop 功能?

javascript - JS/CSS/XHTML : Don't copy specific text during copy events

javascript - appendChild 不工作并显示错误

c++ - 如何给所有结构成员赋值

javascript 在函数之外获取函数结果

loops - Cypress:如何等待然后读取仅在 30 秒到 120 秒之间出现的元素的内部文本