📄 shop.js
字号:
/* registerState transitions: "start": When page is loaded "mustSendMail": When instructions and verify password field shown "mustVerifySecretNumber": When email sent and user must enter secret number inside email "verified": When user is successfully logged in.*/var registerState = "start";var categoryExplores = new Array();var isFavouriteCategoryAutomated = true;window.onload = function() { ajaxCaller.getXML("categories.phtml", onAllCategoriesResponse); ajaxCaller.getXML("cart.phtml", onCartResponse); ajaxCaller.postForPlainText ("user.phtml", { command: 'initialise' }, onInitialiseResponse); $("cartClear").onclick = onCartClearClicked; $("cartMail").onclick = onCartMailClicked; onRegistrationStateChanged("start"); $("login").onclick = onLoginClicked; $("register").onclick = onRegisterClicked; $("cancel").onclick = onCancelClicked; $("favouriteCategory").onclick = function() { isFavouriteCategoryAutomated = false; }}function onInitialiseResponse(userIdText, ignored, ignored) { $("userId").innerHTML = userIdText;}function onAllCategoriesResponse(xml, ignoredHeaders, ignoredContext) { var categories = xml.getElementsByTagName("category"); var categoriesHTML = ""; for (i=0; i<categories.length; i++) { var category = categories[i].firstChild.nodeValue; categoryExplores[category] = 0; favouriteCategoryOption = document.createElement("option"); favouriteCategoryOption.text = favouriteCategoryOption.value = category; try { $("favouriteCategory").add(favouriteCategoryOption, null); // FF } catch(ex) { $("favouriteCategory").add(category); // IE } categoriesHTML += "<div class='category' id='" + category + "'>" + "<span class='categoryName'>" + category + "</span> " + "<span class='explore' " + "onclick=\"onExploreClicked('"+category+"')\">Explore</span>" + "<div class='items'></div>" + "</div>" ; } $("categoriesDiv").innerHTML = categoriesHTML;}function onExploreClicked(category) { ajaxCaller.getXML("category.phtml?name=" + category, onCategoryResponse); if (isFavouriteCategoryAutomated) { categoryExplores[category]++; favouriteCategory = $("favouriteCategory").value; favouriteCategoryExplores = categoryExplores[favouriteCategory]; if (categoryExplores[category] > favouriteCategoryExplores) { $("favouriteCategory").value = category; } }}function onCategoryResponse(categoryXML, ignoredHeaders, ignoredContext) { hideAnyOpenItemsDivs(); openItemsForCategory(categoryXML);}function hideAnyOpenItemsDivs() { var allItemsDivs = getElementsByClassName("categoryItems"); for (i=0; i<allItemsDivs.length; i++) { allItemsDivs[i].style.display = "none"; }}function openItemsForCategory(categoryXML) { var categoryName = categoryXML.getElementsByTagName("name")[0].firstChild.nodeValue;; var items = categoryXML.getElementsByTagName("item"); var itemsHTML = "<div class='categoryItems'>"; for (i=0; i<items.length; i++) { var item = items[i].firstChild.nodeValue; itemsHTML += "<div class='item' id='" + item + "'>" + "<span class='add' " + "onclick=\"onAddItemClicked('"+item+"')\">Add To Cart</span> " + "<span class='itemName'>" + item + "</span> " + "</div>" } itemsHTML+="</div>"; var categoryDiv = $(categoryName); var categoryItems = categoryDiv.childNodes[3]; categoryItems.innerHTML = itemsHTML;}function onAddItemClicked(item) { var vars = { command: 'add', item: item } ajaxCaller.postForXML("cart.phtml", vars, onCartResponse);}function onCartClearClicked() { var vars = { command: 'clear' } ajaxCaller.postForXML("cart.phtml", vars, onCartResponse);}function onCartMailClicked() { email = $("email").value; if (email=="") { alert("This demo really *will* mail all items in your cart\n" + "to your email address, so please fill in the address\n" + "in the profile area first."); } else { ok = confirm("This demo really *will* mail all items in your cart\n" + "to " + email + ".\n" + "Proceed?"); if (ok) { // ajaxCaller.postForXML("cart.phtml", {command: email}, function() {}); vars = { command: "mailCart", email: email } ajaxCaller.postForPlainText("cart.phtml", vars, function() {}); } }}function onCartResponse(cartXML, ignoredHeaders, ignoredContext) { // Redraw it var cartHTML = ""; var itemNames = cartXML.getElementsByTagName("name"); var itemAmounts = cartXML.getElementsByTagName("amount"); for (i=0; i<itemNames.length; i++) { var name = itemNames[i].firstChild.nodeValue; var amount = itemAmounts[i].firstChild.nodeValue; cartHTML += "<div class='cartItem'>" + "<div class='spacer'> </div>" + "<div class='cartItemName'>"+name+"</div>" + "<div class='cartItemAmount'>"+amount+"</div>" + "<div class='spacer'> </div>" + "</div>"; } $("cartContent").innerHTML = cartHTML;}function onCancelClicked() { registerState = "start"; onRegistrationStateChanged();}function onRegisterClicked() { if (registerState=="start") { registerState = "mustSendMail"; } else if (registerState=="mustSendMail") { var submissionOK = sendMail(); if (submissionOK) { registerState = "mustVerifySecretNumber"; } else { return; } } else if (registerState=="mustVerifySecretNumber") { verifySecretNumber(); } onRegistrationStateChanged();}function onRegistrationStateChanged() { if (registerState=="start") { $("userForm").reset(); $("login").style.display = "inline"; $("verifyPasswordInfo").style.display = "none"; $("secretNumberInfo").style.display = "none"; $("verifiedInfo").style.display="none"; $("cancel").style.display = "none"; $("register").value="Register"; } else if (registerState=="mustSendMail") { $("login").style.display = "none"; $("cancel").style.display = "inline"; $("verifyPasswordInfo").style.display = "block"; $("register").value="Send Email"; } else if (registerState=="mustVerifySecretNumber") { $("secretNumberInfo").style.display = "block"; $("register").value="Verify"; } else if (registerState=="verified") { alert("verified email"); $("verifiedInfo").style.display="block"; $("passwordInfo").style.display="none"; $("verifyPasswordInfo").style.display="none"; $("secretNumberInfo").style.display="none"; $("email").style.borderStyle="none"; $("email").style.fontWeight="bold"; $("password").style.display="none"; $("register").style.display="none"; $("cancel").style.display="none"; }}function sendMail() { if (($("password").value!=$("verifyPassword").value) || $("password").length == 0) { $("password").className="errorField"; $("verifyPassword").className="errorField"; return false; } else { $("password").className="validField"; $("verifyPassword").className="validField"; } vars = { email: $("email").value, password: $("password").value, command: 'sendMail' } ajaxCaller.postForPlainText('user.phtml', vars, function() {}); return true;}function verifySecretNumber() { vars = { command: 'verifySecretNumber', secretNumber: $("secretNumber").value } ajaxCaller.postForPlainText("user.phtml", vars, onSecretNumberVerified);}function onSecretNumberVerified(result, ignored, ignored) { if (result=="ok") { registerState = "verified"; onRegistrationStateChanged(); } else { alert( "Secret number was incorrect. \n" + "Try again or 'Cancel' to start registration again. \n" + "Note: Although this is just a demo, it does send a real email " + " to the address specified. The secret number is in there."); }}function onLoginClicked() {}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -