Mercurial > js4py
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 |
| 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 |
