Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用「;事件';s";作为变量的输出_Javascript_Variables_Object_Extjs_Extjs4 - Fatal编程技术网

Javascript 使用「;事件';s";作为变量的输出

Javascript 使用「;事件';s";作为变量的输出,javascript,variables,object,extjs,extjs4,Javascript,Variables,Object,Extjs,Extjs4,我在操作复选框值时遇到问题。复选框上的“更改”事件返回一个对象,在我的示例中: {"val1":"member","val2":"book","val3":"journal","val4":"new_member","val5":"cds"} 需要对上述对象进行转换,搜索引擎才能像这样使用它: { member,book,journal,new_member,cds} 我已使用以下代码块完成了此操作: var formcheckbox = this.getFormcheckbox(); fo

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

{"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 + '}');

                });
问题是,我希望“更改”事件的输出(“生成:{member,book,journal,new_member,cds}的var filter”)在其他地方使用它。我试图使整个事件成为一个变量(var output=“变更事件”),但它不起作用

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

提前谢谢大家,


Tom

您可以将
过滤器
设置为全局变量,并在需要时使用它

// 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);
});
//搜索筛选器的全局变量
var-filter=null;
var formcheckbox=this.getFormcheckbox();
formcheckbox.on('change',函数(复选框,值){
var arr=[],
我
最大值;
//在for(…in…)循环中,键的顺序不能保证相同
//如果顺序很重要(看起来是这样),最好一个接一个地给他们取名字

对于(i=0,max=5;i只需将
filter
传递给将使用它的函数。如果希望发生某些事情,您必须从
change
处理程序内部调用它:

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


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

非常感谢您的关注。我尝试了以下方法: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);useffilter(filter);//Ext.Msg.alert('Output','{'+joinwrd+'}');});var a=函数useFilter(filter){//console.log(filter);返回filter;};console.log(a);但它给了我一个错误。帮助谢谢你的回复。但我没有回复。我需要一些帮助。我使用了下面的代码块。如何在全局变量中保存值?再次感谢
var filter=null;var formcheckbox=this.getFormcheckbox();formcheckbox.on('change',function(checkbox,value){var arr=[],i,max;for(i=0,max=5;i)您可以像处理任何其他变量(全局或非全局)一样执行此操作。
var x=…
在这种情况下,
filter
将为null,除非调用您的
change
-处理程序。当我选中任何(一个或多个)复选框时,将触发更改处理程序。但是当我控制台.log(filter)时它输出“null”。我缺少什么?请帮助。谢谢您单击控制台前的复选框。日志(筛选器)
?单击复选框时是否执行事件处理程序?看看,也许这有助于理解/测试。我必须承认您是一位绅士。您对新手很有耐心。非常感谢。祝您一切顺利。Tom