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

标签 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;

} 

函数输出是“初始”值。

如何返回变量 butnId 在点击函数中转换后的实际值?

最佳答案

传递给 click 的函数中的代码只有在元素被点击后才会执行。

您可能需要 clicker 的调用者传入一个回调函数,然后可以由点击函数调用(假设您不想将所需的操作硬编码到点击函数本身) :-

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);
        });    
} 

关于javascript - 可变范围 js - 返回初始赋值而不是更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1880230/

相关文章:

javascript - react : problems with . ..传播

javascript - 需要关于摆脱全局变量的建议/帮助

bash - 根据多个值检查 bash 变量

PHP 5 - 跨包含文件的可变范围,没有类或函数

javascript - AngularJS 取消绑定(bind)等效变量

javascript - Chrome 中的 QUIC 模式检测

javascript - 如何将 todataurl.js 创建的图像传递到 MySQL?

javascript - Jquery .animate() 有问题

即使没有传递任何内容,JavaScript bool 变量也为 true

PHP:友元类和非贪婪的调用函数/类