变量范围js - 返回初始赋值而不是更改

时间:2009-12-10 10:59:45

标签: javascript variables scope return-value

有下一个脚本:

function clicker(){
var linkId = "[id*=" + "link]";
var butnId='initial';       
    $j(linkId).click(function(){
        var postfix = $j(this).attr('id').substr(4);
        butnId = '#' + 'butn' + postfix;
        });

return butnId;

} 

函数输出为'initial'值。

如何在点击功能中转换后变量 butnId 的实际值?

1 个答案:

答案 0 :(得分:2)

传递给click的函数内部的代码在单击元素之前不会执行。

您可能需要clicker的调用者传入一个回调函数,然后可以通过click函数调用该函数(假设您不想将所需的操作硬编码到click函数本身中): - < / p>

function clicker(callback){
var linkId = "[id*=" + "link]";
var butnId='initial';       
    $j(linkId).click(function(){
        var postfix = $j(this).attr('id').substr(4);
        butnId = '#' + 'butn' + postfix;
              callback(butnId);
        });

return butnId;

} 

可能会重构为: -

function clicker(callback){
var linkId = "[id*=" + "link]";
    $j(linkId).click(function(){
        var postfix = $j(this).attr('id').substr(4);
        callback('#' + 'butn' + postfix);
        });    
}