所以,我正在尝试保存并加载包含产品详细信息列表的cookie,然后将这些产品详细信息显示在页面上。
然而,当我运行时,我收到的是
ReferenceError:找不到变量:GetProductPrice
尝试使用GetProductPrice()
函数读取我存储的Cookie时。
Cookie网站首次加载网站时会运行。它创建了一个产品列表,我后来打算将其用作购物车的一部分。然后它应该保存此cookie,以便在用户转到其他页面时可以再次访问它。这样,如果用户将项目添加到购物车,则稍后不会重置购物车变量。但正如我之前所说,这不起作用。加载和保存cookie函数是由Stack Overflow上的其他人创建的,并且工作正常。
以下是cookie保护程序的代码,该代码应仅在用户第一次访问该网站时运行:
function setUpProducts() { //in here we define each of the products when we first start up. This way we know what products the customer has access to.
setUpPages();
try {
hasRun = getCookie('hasRunCookie'); //get the has run cookie from before, or at least try to
} catch {
hasRun = 0;
}
//if (hasRun != 1){ //only run this the first time, otherwise we dont need to.
if (hasRun != 1) {
hasRun = 1;
createCookie('hasRunCookie', hasRun);
var dataList = []; //array for holding the raw data
var nameList = [];
var priceList = [];
var amountList = []; //lists for temporrily holding data before it is put in the product list's product objects.
var set1 = 0; //allows differentiating between different values in the raw data
var productIds = 0; //product ID to differentiate between products easily
$.get('../productdata.txt', function(data) { //the text file product data contains all the product infomation so that it can be changed at a moments notice.
//var fileDom = $(data);
dataList = data.split("\n");
$.each(dataList, function(n, elem) {
$('#myid').append('<div>' + elem + '</div>');
});
});
var i;
for (i = 0; i < dataList.length; i++) { //this gets the infomation from the text file and loads it into the products
if (set1 == 0) {
nameList.push(dataList[i]);
set1 = 1;
} else if (set1 == 1) {
priceList.push(dataList[i]);
set1 = 0;
}
}
while (productIds != 8) { //make the products, programing counting always starts at 0, so 8 is actually the 9th number.
var productObject = {
productID: productIds,
productName: nameList[productIds],
productPrice: priceList[productIds],
purchasedAmount: 0
};
productList.push(productObject); //put each product into the product list.
productIds += 1;
}
var json_str = JSON.stringify(productList); //bottle and store our list of products
createCookie('ProductListCookie', json_str);
//}
}
以下是用于加载Cookie并在相关产品页面上显示产品价格的代码:
function GetProductPrice(productIdz) {
var json_str = getCookie('hasRunCookie');
productList = JSON.parse(json_str);
for (i = 0; i < productList.length; i++) {
if (productList[i].productID == productIdz) {
productHolder = productList[i];
document.getElementById("price").innerHTML = productHolder.productPrice;
}
}
}
答案 0 :(得分:5)
本来会发表评论,但不能。
首先,如果你得到: ReferenceError:找不到变量:GetProductPrice ,可能是你的GetProductPrice函数没有在那个页面中定义,或者可能还没有,检查加载你的脚本顺序。
第二
function GetProductPrice(productIdz){
var json_str = getCookie('hasRunCookie'); // this is 1
productList = JSON.parse(json_str) // this also is 1
也许
getCookie('ProductListCookie')
会起作用吗?
答案 1 :(得分:5)
Sub updatestrial()
Dim r as Range
Dim ws as worksheet
Set ws = worksheets("Sheet1")
Set r = ws.range(ws.range("A1"),ws.cells(ws.rows.count,1).end(xlup))
r.advancedfilter Action:=xlFilterCopy, CopyToRange:=ws.Range("H5"), Unique:=True
End Sub
答案 2 :(得分:1)
正如其他人所提到的那样ReferenceError: Can't find variable: GetProductPrice
意味着JS根本无法找到你的功能。确保调用GetProductPrice()
的代码可以访问该函数。
另行说明 - 你不应该使用cookies。 Cookie随每个请求一起发送到服务器,并且会增加服务器的负载并减慢用户的页面加载速度。
出于您的目的考虑使用localStorage,所有现代浏览器甚至IE 8+都支持它,并且无需向服务器发送不必要信息的开销即可完成所需的一切。而您几乎不需要更改代码。
答案 3 :(得分:0)
我认为你在window.GetProductPrice = function(productIdz){
发生时定义了这个功能。
如果是,您必须像这样定义您的功能:
active
检查一下,让我知道结果。
答案 4 :(得分:0)
一般来说,cookie限制在4k左右,因此localStorage更好。