如何在cookie中保存货币和费率

时间:2017-03-20 14:55:44

标签: javascript jquery jquery-plugins currency-formatting curry-currency-converter

我已经实现了一个名为Curry - Currency的插件,这个插件允许我将我的产品价格转换为下拉列表中选择的任何货币。目前,一旦用户访问网站或按F5刷新页面,价格将显示为:[undefined0],以获得我必须在下拉列表中选择货币的价格。

我想要的是,一旦用户访问网站,如果他没有设置首选货币,产品的价格将转换为默认货币[USD].

我尝试使用js-cookie来实现这一目标,但我仍然得到[undefined0],低于我试图做的事情:

<select id="convert"></select>

<div class="changeprice">$20</div>

$(function(){
    $('#convert').curry({
        target: '.price',
        change: true,
        base: 'USD',
        symbols: {
            'ILS' : '₪',
            'GBP' : '£',
            'INR' :'<i class="fa fa-inr"></i>'

        }
    }).change(function(){
        var selected = $(this).find(':selected'), // get selected currency
            rate = selected.data('rate'), // get currency rate
            currency = selected.val(); // get currency name
        Cookies.remove('site_currency', { path: '' });
        Cookies.remove('site_rate', { path: '' });
        Cookies.set('site_currency', currency, { expires: 7, path: '' });
        Cookies.set('site_rate', rate, { expires: 7, path: '' });
        console.log( currency, rate );
    });
});



$('document').ready(function() {

 var CookieSet = Cookies.get('site_currency')

 if (CookieSet == 'undefined') {
   savedRate = 1;
   savedCurrency = '$ USD';
   console.log('CookieSet Empty. Set to '+savedCurrency);
 }
 else {
  savedRate = Cookies.get('site_rate');
  savedCurrency = Cookies.get('site_currency');
  console.log('CookieSet readed from cookie. Saved Rate: '+savedRate+' Saved currency: '+savedCurrency);
 }

 $('#convert').val( savedCurrency );

});

http://jsfiddle.net/QE9V3/31/

1 个答案:

答案 0 :(得分:1)

js-cookie readme开始:

  

阅读Cookie:

Cookies.get('name'); // => 'value'
Cookies.get('nothing'); // => undefined

所以这部分代码显然是一个错字:

if (CookieSet == 'undefined') {
}

...因为您没有与undefined global property进行比较,所以您正在与一段文字进行比较。在JavaScript中,与大多数其他语言一样,您有标识符(变量),并且您有文字文本(字符串):

&#13;
&#13;
var foo = "Hello, World!";
console.log("foo", foo);
&#13;
&#13;
&#13;

你应该这样做:

if (CookieSet === undefined) {
}

...或者,如果你是偏执狂,并且你认为某些代码可能已经过了undefined属性,那么:

if (typeof CookieSet === "undefined") {
}

请注意,我们在这里引用&#34; undefined&#34;因为typeof会返回字符串。

免责声明:我并不是说这是唯一的问题并且修复它会使你的应用程序正常工作,但这显然是需要调整的一点点。