2012-05-19 3 views
2

У меня есть проблема с манипулированием значениями флажка. «Изменение» событие на флажков возвращает объект, в моем случае:Использовать вывод "event" как переменной

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

       }); 

проблема заключается в том, что я хочу на «изменение» выходного мероприятия («вар фильтр», который производит на: {член, книги, журналы, new_member, компакт-диски}) т o использовать его в другом месте. Я попытался сделать все событие переменной (var output = "событие изменения"), но он не работает.

Возможно, это глупый вопрос, но я новичок, и мне нужна небольшая помощь.

Спасибо заранее,

Том

ответ

2

Вы могли бы сделать 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); 
}); 
+0

Благодарим за сообщение. Но я этого не сделал. Мне нужна помощь. Я использовал приведенный ниже код. Как сохранить значение в глобальной переменной? Еще раз спасибо

var filter = null; \t \t \t \t \t \t \t \t var formcheckbox = this.getFormcheckbox(); \t \t \t \t formcheckbox.on('change', function(checkbox, value){ \t \t \t \t \t var arr = [], \t \t \t \t \t i, \t \t \t \t \t max; \t \t \t \t \t \t \t \t \t \t \t \t \t \t for (i = 0, max = 5; i <= max; i++) { \t \t \t \t \t \t arr.push(value["val" + i]); \t \t \t \t \t } \t \t \t \t \t \t \t \t \t \t \t \t \t \t filter = "{" + arr.join(",") + "}"; \t \t \t \t \t \t \t \t \t return filter; \t \t \t \t \t \t \t \t \t }); \t \t \t \t \t \t \t \t console.log(filter);
anarchos78

+0

Вы делаете это как с любой другой переменной (глобальный или нет). 'var x = ...' В этом случае 'filter' будет null, если ваш обработчик' change' не будет вызван. – Andreas

+0

Обработчик изменений запускается, когда я проверяю любые (один или несколько) флажков. Но когда i console.log (filter) выводит «null». Что мне не хватает? Пожалуйста помоги. Спасибо – anarchos78

3

Просто передайте filter функции, которые будут использовать его. Вам все равно придется звонить изнутри обработчика change, если вы хотите, чтобы что-то произошло:

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


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

Большое спасибо за внимание. Я пробовал это:

formcheckbox.on('change', function(checkbox, value){ \t \t \t \t \t \t \t \t var arr=[]; \t \t \t \t \t \t \t for (var i in value) { \t \t \t \t \t arr.push(value[i]) \t \t \t \t }; \t \t \t \t \t \t \t \t var wrd = new Array(arr); \t \t \t \t \t var joinwrd = wrd.join(","); \t \t \t \t \t \t var filter = '{' + joinwrd + '}'; \t \t \t \t \t \t \t \t \t \t \t \t //console.log(filter); \t \t \t \t \t \t useFilter(filter); \t \t \t \t \t \t \t \t \t \t \t //Ext.Msg.alert('Output', '{' + joinwrd + '}'); \t \t \t \t \t \t \t \t }); \t \t \t var a = function useFilter(filter){ \t \t \t \t //console.log(filter); \t \t \t \t return filter; \t \t \t }; \t \t \t \t \t \t \t \t console.log(a);
Но это дает мне ошибку. Помогите – anarchos78

Смежные вопросы