使用“事件”的输出作为变量

Use "event's" output as a variable

本文关键字:变量 输出 事件 使用      更新时间:2023-09-26

我在操作复选框值时遇到问题。复选框上的"更改"事件返回一个对象,在我的例子中:

{"val1":"member","val2":"book","val3":"journal","val4":"new_member","val5":"cds"}

上述对象需要转换,以便搜索引擎使用它,如下所示:

{ member,book,journal,new_member,cds}

我已经使用以下代码块完成了此操作:

var formcheckbox = this.getFormcheckbox();
formcheckbox.on('change', function(checkbox, value){
                var arr=[];
                for (var i in value) {
                    arr.push(value[i])
                };
                var wrd = new Array(arr);
                    var joinwrd = wrd.join(",");
                        var filter = '{' + joinwrd + '}';
                        //console.log(filter);
                //Ext.Msg.alert('Output', '{' + joinwrd + '}');
                });

问题是我想将"change"事件的输出(产生:{ member,book,journal,new_member,cds}的"var filter"(用于其他地方。我试图使整个事件成为一个变量(var 输出 ="更改事件"(,但它不起作用。

也许这是一个愚蠢的问题,但我是一个新手,我需要一点帮助。

提前谢谢你,

汤姆

只需将filter传递给将使用它的函数即可。如果你想发生一些事情,你必须从change处理程序内部调用它:

formcheckbox.on('change', function(cb, value){
    //...
    var filter = "{" + arr.join(",") + "}";
    useFilter(filter);
});

function useFilter(filter){
    // use the `filter` var here
}

你可以filter全局变量,并在需要的地方使用它。

// global variable for the search filter
var filter = null;
var formcheckbox = this.getFormcheckbox();
formcheckbox.on('change', function(checkbox, value){
    var arr = [],
    i,
    max;
    // the order of the keys isn't guaranteed to be the same in a for(... in ...) loop
    // if the order matters (as it looks like) better get them one by one by there names
    for (i = 0, max = 5; i <= max; i++) {
        arr.push(value["val" + i]);
    }
    // save the value in a global variable
    filter = "{" + arr.join(",") + "}";
    console.log(filter);
});