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