单击VAR并提醒值

时间:2011-02-15 11:29:19

标签: javascript jquery

为什么我不能让它工作?

我想从菜单中获取index(),并在哈希值发生变化时发出alert()值。

警报未出现。

    $('#menu li a').click(function() {
        var index = $(this).parent().index()+1;
    });



    $(window).bind('hashchange', function () { //detect hash change
        var hash = window.location.hash.slice(1); //hash to string (= "myanchor")
        alert(index);
    });

你能告诉我我做错了吗?

3 个答案:

答案 0 :(得分:2)

这是一个范围问题,index变量是它声明的函数的本地变量,因此您无法从其他函数访问它。将声明移动到外部作用域,它将起作用:

var index;  // declare the variable
$('#menu li a').click(function() {
    // Assign the value, notice the `var` keyword isn't there anymore
    index = $(this).parent().index() + 1;
});

$(window).bind('hashchange', function() { //detect hash change
    var hash = window.location.hash.slice(1); //hash to string (= "myanchor")
    // Get the value
    alert(index);
});

我建议您阅读JavaScript中的范围界定方法 - JS Garden有一个不错的概述。

答案 1 :(得分:0)

变量index与调用alert的范围不同。

您可以在两个函数之前将其声明为全局变量:

var index;

然后删除第一个函数中的var关键字:

$('#menu li a').click(function() {
    index = $(this).parent().index()+1;
});

答案 2 :(得分:0)

    var index;
    $('#menu li a').click(function() {
        index = $(this).parent().index()+1;
    });



    $(window).bind('hashchange', function () { //detect hash change
        var hash = window.location.hash.slice(1); //hash to string (= "myanchor")
        alert(index);
    });