我已经阅读了几个关于在多个函数中使用变量的问题,将其设置为全局(在函数之外定义它)...但是,我有一个函数可以在click上生成动态值(得到一个href值为一个链接) -
我需要将结果变量传递给另一个函数。
基本上,我抓取一个点击链接的href值,然后想要在选择确认框时将其传递给Ajax。
似乎全局声明变量不会起作用,因为它的定义仅在触发onclick事件时才会出现。
有什么想法吗?
答案 0 :(得分:4)
您可以将变量创建为值为null
的全局变量,然后在第一个函数中设置它。在第二个函数中读取变量后,将值设置回null
。
示例:
var someGlobal = null;
function f1( ) {
someGlobal = 'someValue';
}
function f2( ) {
if( someGlobal == null ) {
// the global isn't set! might want a message of some sort, or just ignore it
return;
}
var myLocal = someGlobal;
someGlobal = null;
// do something with myLocal here
}
答案 1 :(得分:4)
实现这一目标的最佳方法是定义变量,因为您已经通过函数(){}之外的任何内容读取了外部源。例如,我通常为全局变量做的是设置一个默认值,或者将它设置为我在JS中编写的任何其他代码之上的空白值。
示例:
var myHREFval;
$('a').click(function(){myHREFval = $(this).attr('href');});
答案 2 :(得分:2)
您可以像往常一样将其作为变量传递:
$('...').click(function() {
var myURL = $(this).attr('href')
otherFunction(myURL)
})