annotate core-javascript/core-javascript-work/counters.js @ 154:ee0bf994ab95 core-javascript.closure-exercises

Add remove_answers.py script (and clean up closure-exercises.py).
author jf3243
date Wed, 02 Nov 2011 17:27:39 +0000
parents 20d76c716c9d
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
138
20d76c716c9d core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents: 124
diff changeset
1 (function()
20d76c716c9d core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents: 124
diff changeset
2 {
20d76c716c9d core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents: 124
diff changeset
3 // Define a Counter class.
20d76c716c9d core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents: 124
diff changeset
4 var counter = {}; // Prototype object for Counter.
20d76c716c9d core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents: 124
diff changeset
5
20d76c716c9d core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents: 124
diff changeset
6 counter.__init__ = function(name){
20d76c716c9d core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents: 124
diff changeset
7
20d76c716c9d core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents: 124
diff changeset
8 this.name = name;
20d76c716c9d core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents: 124
diff changeset
9 this.count = 0;
20d76c716c9d core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents: 124
diff changeset
10 };
20d76c716c9d core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents: 124
diff changeset
11
20d76c716c9d core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents: 124
diff changeset
12 counter.onclick = function(event){
20d76c716c9d core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents: 124
diff changeset
13
20d76c716c9d core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents: 124
diff changeset
14 this.count ++;
20d76c716c9d core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents: 124
diff changeset
15 };
20d76c716c9d core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents: 124
diff changeset
16
20d76c716c9d core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents: 124
diff changeset
17 counter.html = function(){
20d76c716c9d core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents: 124
diff changeset
18
20d76c716c9d core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents: 124
diff changeset
19 return this.name + ' ' + this.count;
20d76c716c9d core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents: 124
diff changeset
20 };
20d76c716c9d core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents: 124
diff changeset
21
20d76c716c9d core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents: 124
diff changeset
22 Counter = SimpleClass(counter);
20d76c716c9d core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents: 124
diff changeset
23
20d76c716c9d core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents: 124
diff changeset
24
20d76c716c9d core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents: 124
diff changeset
25 // Make explicit use of global variables.
20d76c716c9d core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents: 124
diff changeset
26 var global = (function(){return this;})();
20d76c716c9d core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents: 124
diff changeset
27
20d76c716c9d core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents: 124
diff changeset
28
20d76c716c9d core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents: 124
diff changeset
29 // Interaction.
20d76c716c9d core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents: 124
diff changeset
30 var onclick_factory = function(models){
20d76c716c9d core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents: 124
diff changeset
31
20d76c716c9d core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents: 124
diff changeset
32 var onclick = function(event){
20d76c716c9d core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents: 124
diff changeset
33
20d76c716c9d core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents: 124
diff changeset
34 event = event || global.event; // For IE event handling.
20d76c716c9d core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents: 124
diff changeset
35 var target = event.target || event.srcElement;
20d76c716c9d core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents: 124
diff changeset
36 var id = target.id;
20d76c716c9d core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents: 124
diff changeset
37 if (id) {
20d76c716c9d core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents: 124
diff changeset
38 var id_num = +id.slice(1);
20d76c716c9d core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents: 124
diff changeset
39 var model = models[id_num];
20d76c716c9d core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents: 124
diff changeset
40 model.onclick();
20d76c716c9d core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents: 124
diff changeset
41 var html = model.html();
20d76c716c9d core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents: 124
diff changeset
42 if (html){
20d76c716c9d core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents: 124
diff changeset
43 global.document.getElementById(id).innerHTML = html;
20d76c716c9d core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents: 124
diff changeset
44 }
20d76c716c9d core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents: 124
diff changeset
45 }
20d76c716c9d core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents: 124
diff changeset
46 };
20d76c716c9d core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents: 124
diff changeset
47 return onclick;
20d76c716c9d core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents: 124
diff changeset
48 };
20d76c716c9d core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents: 124
diff changeset
49
20d76c716c9d core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents: 124
diff changeset
50
20d76c716c9d core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents: 124
diff changeset
51 // Set up the web page.
20d76c716c9d core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents: 124
diff changeset
52 global.onload = function(){
20d76c716c9d core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents: 124
diff changeset
53
20d76c716c9d core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents: 124
diff changeset
54 var models = [
20d76c716c9d core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents: 124
diff changeset
55 Counter('apple'),
20d76c716c9d core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents: 124
diff changeset
56 Counter('banana'),
20d76c716c9d core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents: 124
diff changeset
57 Counter('cherry'),
20d76c716c9d core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents: 124
diff changeset
58 Counter('date')
20d76c716c9d core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents: 124
diff changeset
59 ];
20d76c716c9d core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents: 124
diff changeset
60
20d76c716c9d core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents: 124
diff changeset
61 var element = document.getElementById('example');
20d76c716c9d core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents: 124
diff changeset
62
20d76c716c9d core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents: 124
diff changeset
63 element.innerHTML = (
20d76c716c9d core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents: 124
diff changeset
64 '<span id="a0">apple 0</span>'
20d76c716c9d core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents: 124
diff changeset
65 + '<span id="a1">banana 0</span>'
20d76c716c9d core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents: 124
diff changeset
66 + '<span id="a2">cherry 0</span>'
20d76c716c9d core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents: 124
diff changeset
67 + '<span id="a3">date 0</span>'
20d76c716c9d core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents: 124
diff changeset
68 );
20d76c716c9d core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents: 124
diff changeset
69
20d76c716c9d core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents: 124
diff changeset
70 element.onclick = onclick_factory(models);
20d76c716c9d core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents: 124
diff changeset
71 element = undefined; // Avoid IE memory leak.
20d76c716c9d core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents: 124
diff changeset
72 };
20d76c716c9d core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents: 124
diff changeset
73
20d76c716c9d core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents: 124
diff changeset
74 })();
20d76c716c9d core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents: 124
diff changeset
75
20d76c716c9d core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents: 124
diff changeset
76
20d76c716c9d core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents: 124
diff changeset
77
20d76c716c9d core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents: 124
diff changeset
78
20d76c716c9d core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents: 124
diff changeset
79