Чтобы сохранить эти переменные постоянными после объявления функции, у вас есть следующие варианты:
- Они должны быть объявлены в области более высокого уровня, которая сохраняется в течение необходимого вам периода времени.
- Они должны быть глобальными переменными, которые сохраняются в течение всего срока службы веб-страницы.
- Их необходимо назначить в качестве свойств некоторого объекта, который сохраняется в течение требуемой продолжительности. Это может быть сделано путем возврата объекта с этими значениями из функции или передачи объекта в функцию, для которой можно установить свойства, или с помощью глобального объекта, который присваивает свойства.
Самое простое решение (считалось не всегда лучшим) - сделать их глобальными переменными, объявив их в более широкой области видимости и удалив перед ними var
в функции, так что вы просто работаете с глобальными переменными вместо используя локальные переменные:
// declare global variables in global scope
var standard_selector;
var business_selector;
var profession_selector;
function update_prices(product_selector){
//kind of a hack to account for the sometimes having a professional price and sometimes not
var price_count = product_selector.find('small.rt').length;
for (i=0;i<=price_count;i++)
{
if(i == 0){
standard_selector = product_selector.find('small.rt:eq('+ i +')');
var standard_price = standard_selector.attr('data');
}
if(i == 1){
business_selector = product_selector.find('small.rt:eq('+ i +')');
var business_price = business_selector.attr('data');
}
if(i == 2){
professional_selector = product_selector.find('small.rt:eq('+ i +')');
var professional_price = professional_selector.attr('data');
}
}
}
Или, если вы просто хотите вернуть их из этой функции, чтобы вы могли использовать их на уровень выше, то вы можете вернуть их в объекте:
function update_prices(product_selector){
//kind of a hack to account for the sometimes having a professional price and sometimes not
var sel = {};
var price_count = product_selector.find('small.rt').length;
for (i=0;i<=price_count;i++)
{
if(i == 0){
sel.standard_selector = product_selector.find('small.rt:eq('+ i +')');
var standard_price = standard_selector.attr('data');
}
if(i == 1){
sel.business_selector = product_selector.find('small.rt:eq('+ i +')');
var business_price = business_selector.attr('data');
}
if(i == 2){
sel.professional_selector = product_selector.find('small.rt:eq('+ i +')');
var professional_price = professional_selector.attr('data');
}
}
return(sel);
}
var selectors = update_prices(xxx);
// access selectors.standard_selector, selectors.business_selector, selectors.profession_selector here