⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 shop.js

📁 基于Ajax购物车通用核心Javascript代码
💻 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'>&nbsp;</div>"              + "<div class='cartItemName'>"+name+"</div>"              + "<div class='cartItemAmount'>"+amount+"</div>"              + "<div class='spacer'>&nbsp;</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 + -