Better (by far):
Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>cmene be fa no da pagbu</title>
<script type="text/javascript">
var Format = {
currency: function(n, dp, s) {
return (s || '$') + n.toFixed(dp || 2);
},
interpolate: function(s) {
for (var i = 1; i < arguments.length; ++i)
s = s.replace("%s", arguments[i]);
return s;
}
};
var Functional = {
map: function(f, a) {
for (var i = a.length - 1, r = []; i >= 0; --i)
r[i] = f(a[i], i);
return r;
}
};
var Dom = {
getElementsByClassName: (function() {
function getElementsByClassName_(root, className) {
return (className(root.className || "") ? [root] : []).concat(entr(root, className));
}
function entr(root, className) {
if (typeof className === "string")
className = (function(cn) {
return function(c) {
return c.indexOf(cn) >= 0;
};
})(className);
return Array.prototype.concat.apply([], Functional.map(function(e) {
return getElementsByClassName_(e, className);
}, root.childNodes));
}
return entr;
})()
};
var TallyPage = {
sumForm: function(frm, qstr) {
for (var t = 0, v, e = Dom.getElementsByClassName(frm, "sum"), i = e.length; --i >= 0; )
if (e[i].type === "checkbox" && e[i].checked)
t += ((v = frm.elements[Format.interpolate(qstr, e[i].name)]) ? v.value : 1) * parseInt(e[i].value, 10);
return t;
},
updateForm: function(frm, out) {
(out.firstChild || out.appendChild(document.createTextNode(""))).nodeValue = Format.currency(TallyPage.sumForm(frm, "%s_q"));
},
init: function() {
var ud = function() { TallyPage.updateForm(this.form, document.getElementById("output")); },
v;
Functional.map(function(e) { e.onclick = e.onkeyup = e.onchange = ud; },
Dom.getElementsByClassName(v = document.forms['sum_form'], function(c) {
return c.indexOf('sum') >= 0 || c.indexOf('quantity') >= 0;
}));
TallyPage.updateForm(v, document.getElementById("output"));
(v = v.elements.subm).parentNode.removeChild(v);
v = null;
}
};
onload = TallyPage.init;
</script>
</head>
<body>
<form action="/some/summer" id="sum_form">
<table>
<thead>
<tr>
<th> </th>
<th>Event</th>
<th>Price</th>
<th>Quantity</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<input type="checkbox" value="40" class="sum" name="aaa">
</td>
<td>AAA</td>
<td>$40.00</td>
<td>1</td>
</tr>
<tr>
<td>
<input type="checkbox" value="30" class="sum" name="bbb">
</td>
<td>BBB</td>
<td>$30.00</td>
<td>1</td>
</tr>
<tr>
<td>
<input type="checkbox" value="100" class="sum" name="ccc">
</td>
<td>
<a href="#" title="CCC">CCC</a>
</td>
<td>$100.00</td>
<td>
<input type="textbox" class="quantity" name="ccc_q">
</td>
</tr>
</tbody>
</table>
<span id="output"> </span>
<input name="subm" type="submit" value="Show Total">
</form>
</body>
</html>
I suggest you have a read of http://dynamicdrive.com/forums/showp...postcount=1337.
Bookmarks