我已经实现了一个名为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 );
});
答案 0 :(得分:1)
从js-cookie readme开始:
阅读Cookie:
Cookies.get('name'); // => 'value' Cookies.get('nothing'); // => undefined
所以这部分代码显然是一个错字:
if (CookieSet == 'undefined') {
}
...因为您没有与undefined
global property进行比较,所以您正在与一段文字进行比较。在JavaScript中,与大多数其他语言一样,您有标识符(变量),并且您有文字文本(字符串):
var foo = "Hello, World!";
console.log("foo", foo);
&#13;
你应该这样做:
if (CookieSet === undefined) {
}
...或者,如果你是偏执狂,并且你认为某些代码可能已经过了undefined
属性,那么:
if (typeof CookieSet === "undefined") {
}
请注意,我们在这里引用&#34; undefined&#34;因为typeof会返回字符串。
免责声明:我并不是说这是唯一的问题并且修复它会使你的应用程序正常工作,但这显然是需要调整的一点点。