2015-06-13 5 views
1

Я не уверен, что это правильный способ определения переменных на основе значений массива.jQuery - определение переменных на основе значений массива

Функция getParameterByName() возвращает параметры URL

var t = getTab(); 

var paramArray = { 
'year' : 'y', 
'condition' : 'c', 
'sort' : 's' 
}; 

/*below vars are defined by $.each 
var y = getParameterByName('y'); 
var c = getParameterByName('c'); 
var s = getParameterByName('s'); 

*/ 

$.each(paramArray, function(key, value) { 

    //define y,c,s variables 
    var value = getParameterByName(value); 

    console.log(value);//logs blank (nothing) 

    if(value != "") 
    { 
     $("#sort-filter-number").append('<button id="'+value+'" class="refresh refresh-'+key+' btn btn-info btn-sm">'+value+' <i class="fa fa-times"></i></button>'); 
    } 

}); 

toSort(y,c,s); //line 55 error : Uncaught ReferenceError: l is not defined 

ответ

0

Вы можете определить переменные на window объекта, чтобы сделать его global и могут быть доступны из любой точки мира.

Demo:

var paramArray = { 
 
    'year': 'y', 
 
    'condition': 'c', 
 
    'sort': 's' 
 
}; 
 

 
$.each(paramArray, function(key, value) { 
 
    //define y,c,s variables 
 
    window[value] = key + ' => ' + value; 
 
    // ^^^^^^^^^^ 
 

 
    document.write(value + '<br />'); //logs blank (nothing) 
 

 
    if (value != "") { 
 
    $("#sort-filter-number").append('<button id="' + value + '" class="refresh refresh-' + key + ' btn btn-info btn-sm">' + value + ' <i class="fa fa-times"></i></button>'); 
 
    } 
 

 
}); 
 

 
document.write(y + '<br />' + c + '<br />' + s); // No error here
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.0/jquery.min.js"></script>

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