2011-02-15 5 views
0

Почему я не могу заставить это работать?Установить VAR при щелчке и предупредить значение

Я хочу получить индекс() из меню и оповещать() значение, когда хеш изменяется, что он делает.

Предупреждение не появляется.

$('#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); 
    }); 

Можете ли вы сказать мне, что я делаю неправильно ???

+2

Используя 'var', вам делают 'index' local функцией' click'. –

ответ

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 имеет приличный обзор.

0

Переменная index не в той же области, что и для звонка alert.

Вы можете объявить ее как глобальную переменную перед обеими функциями:

var index; 

И затем удалить var ключевое слово в первой функции:

$('#menu li a').click(function() { 
    index = $(this).parent().index()+1; 
}); 
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); 
    }); 
Смежные вопросы