Ответ 1
Ваш код выглядит отлично, за исключением того, что если объявление переменной внутри обработчика чтения dom, то это не будет глобальная переменная... это будет переменная закрытия
jQuery(function(){
//here it is a closure variable
var a_href;
$('sth a').on('click', function(e){
a_href = $(this).attr('href');
console.log(a_href);
//output is "home"
e.preventDefault();
}
})
Чтобы сделать переменную global, одним из решений является объявление переменной в глобальной области
var a_href;
jQuery(function(){
$('sth a').on('click', function(e){
a_href = $(this).attr('href');
console.log(a_href);
//output is "home"
e.preventDefault();
}
})
другой должен установить переменную как свойство объекта window
window.a_href = $(this).attr('href')
Почему консольная печать undefined
Вы получаете вывод как undefined
, потому что, хотя переменная объявлена, вы не инициализировали ее значением, значение переменной устанавливается только после того, как элемент a
будет нажат до этого времени переменная будет иметь значение undefined
. Если вы не объявляете переменную, она выкинет ReferenceError