<HTML>
<HEAD>
<TITLE>Shopping Cart</TITLE>
<META http-equiv=Content-Type content="text/html; charset=UTF-8">
<STYLE type=text/CSS>
fieldset {width:400px}
legend {font-size:24px;font-family:comic sans ms;color:#004455}
</STYLE>
</HEAD>
<form action="#" method="post" id="cartForm">
<fieldset style="width:450px"><legend>Pick Some Music</legend>
<BODY scroll="auto">
<div id="products"></div><hr>
<input type="button" value="Add to cart" onclick="cart()" />
<div id="inCart"></div>
<input type="button" value="Remove from cart" onclick="removeCart()" />
<br/>
<br/>
<div><label for="firstName">First Name</label><input type="text" name="firstName" id="firstName" required></div>
<div><label for="lastName">Last Name</label><input type="text" name="lastName" id="lastName" required></div>
<div><label for="address">Address</label><input type="text" name="address" id="address" required></div>
<div><label for="city">City</label><input type="text" name="city" id="city" required></div>
<div><label for="state">State</label><select name="state" id="state">
<option value="AZ">AZ</option>
<option value="CO">CO</option>
<option value="CA">CA</option>
<option value="DE">DE</option>
<option value="FL">FL</option>
<option value="GA">GA</option>
<option value="HI">HI</option>
<option value="LA">LA</option>
<option value="MO">MO</option>
<option value="NM">NM</option>
<option value="VA">VA</option>
<option value="WV">WV</option>
</select></div>
<div><label for="zip">Zip Code</label><input type="text" name="zip" id="zip" required></div>
<input type="submit" value="Submit" id="submit">
<div id="output"></div>
<body>
</fieldset>
<div id="outputC"></div>
</form>
<script src="js/store.js"></script>
</body>
</html>
var items =
[
{'id':1, 'artist':'<h2>Pink Floyd</h2>', 'image':'<img src="images/darkside.jpg" align= right onmouseover="zoomOut(this)">','desc':'The greatest band of all time!', 'title':'Dark Side of the Moon','price':20.00, 'qty':0},
{'id':2, 'artist':'<h2>Jimi Hendrix</h2>', 'image':'<img src="images/jimi.jpg" align= right>','desc':'Left-Handed Guitar Genius', 'title':'Electric LadyLand', 'price':15.98, 'qty':0},
{'id':3, 'artist':'<h2>Beastie Boys</h2>', 'image':'<img src="images/pauls.jpg" align= right>','desc':'Universally cool', 'title':'Pauls Boutique', 'price':14.00, 'image_src': '', 'qty':0}
];
var butnOrder = document.getElementById("butnOrder");
var M = '$';
var stuff = '';
var order = [];
var total = 0;
var TAX = 0;
var taxTotal = 0;
for(j=0;j<items.length;j++) {
stuff+=''+albumList(j)+'';
}
document.getElementById('products').innerHTML=stuff;
function albumList(j) {
var getStuff='';
//put items[] into the form, iterate,return
getStuff+='<form name="cartForm'+j+'">';
getStuff+='<fieldset><legend>'+items[j].artist+'</legend>';
getStuff+='<p>'+items[j].image+'</p>';
getStuff+='<p>Album: '+''+items[j].title+'</p>';
getStuff+='<p>Description: '+items[j].desc+'</p>';
getStuff+='<p>Price: '+M+''+items[j].price+'</p>';
getStuff+='<b>Qty</b>';
getStuff+='<select id="qty '+j+'">';
for(i=0;i<6;i++) {
getStuff+='<option value="'+i+'">'+i+'</option>';
}
getStuff+='</select>';
getStuff+='</fieldset>';
getStuff+='</form>';
return getStuff;
}
function cart() {
var select = document.getElementsByTagName('select');
k=0;
//loop
for (i=0; i < select.length; i++) {
if (select[i].id.substring(0, 4) == 'qty ' && select[i].value > 0) {
console.log(i, select[i].value);
order[k]=''+items[i].artist+': '+select[i].value+' * '+M+ items[i].price+'';
//calculate the total
total += select[i].value*items[i].price;
k++;
taxTotal += total+(total*0.07);
}
}
document.getElementById('inCart').innerHTML=order.join('<br>')+'<br>'+'<b>SubTotal: </b>'+ M +total+'<br>'+ 'Tax: $0.07 '+'<h3>Total: '+M+taxTotal+'</h3>';
}
function removeCart(){
}
function process() {
'use strict';
// Get form references:
var firstName = document.getElementById('firstName').value;
var lastName = document.getElementById('lastName').value;
var address = document.getElementById('address').value;
var city = document.getElementById('city').value;
var state = document.getElementById('state').value;
var zip = document.getElementById('zip').value;
// Reference to where the output goes:
var outputC = document.getElementById('outputC');
// Create a new object:
var orderInfo = {
firstName: firstName,
lastName: lastName,
address: address,
city: city,
state: state,
zip: zip,
getName: function() {
return this.lastName + ', ' + this.firstName;
},
purchaseDate: new Date()
};
butnOrder.addEventListener("click", process, false);
// Create the ouptut as HTML:
var message = '<h2>Order Comfirmation</h2>Name: ' + orderInfo.getName() + '<br>';
message += '<b>Mailing Info : </b>'+'<br>'+ orderInfo.address +'<br>'+ orderInfo.city +'<br>'+ orderInfo.state +'<br>'+ orderInfo.zip +'<br>'+'<br>';
message += '<b>Purchase Date: </b>' + orderInfo.purchaseDate.toDateString();
// Display the orderInfo object:
outputC.innerHTML = message;
// Return false:
return false;
}
// Initial setup:
function init() {
'use strict';
document.getElementById('cartForm').onsubmit = process;
} // End of init() function.
window.onload = init;
window.onload = function() {
'use strict';
U.$('cartForm').onsubmit = albumList;
};
window.onload = cart;
Output
300px
You can jump to the latest bin by adding /latest
to your URL
Keyboard Shortcuts
Shortcut | Action |
---|---|
ctrl + [num] | Toggle nth panel |
ctrl + 0 | Close focused panel |
ctrl + enter | Re-render output. If console visible: run JS in console |
Ctrl + l | Clear the console |
ctrl + / | Toggle comment on selected lines |
ctrl + ] | Indents selected lines |
ctrl + [ | Unindents selected lines |
tab | Code complete & Emmet expand |
ctrl + shift + L | Beautify code in active panel |
ctrl + s | Save & lock current Bin from further changes |
ctrl + shift + s | Open the share options |
ctrl + y | Archive Bin |
Complete list of JS Bin shortcuts |
JS Bin URLs
URL | Action |
---|---|
/ | Show the full rendered output. This content will update in real time as it's updated from the /edit url. |
/edit | Edit the current bin |
/watch | Follow a Code Casting session |
/embed | Create an embeddable version of the bin |
/latest | Load the very latest bin (/latest goes in place of the revision) |
/[username]/last | View the last edited bin for this user |
/[username]/last/edit | Edit the last edited bin for this user |
/[username]/last/watch | Follow the Code Casting session for the latest bin for this user |
/quiet | Remove analytics and edit button from rendered output |
.js | Load only the JavaScript for a bin |
.css | Load only the CSS for a bin |
Except for username prefixed urls, the url may start with http://jsbin.com/abc and the url fragments can be added to the url to view it differently. |