4 <form action=
"javascript:updateDom()">
5 <label for=
"typer">New label text:
</label>
6 <input name=
"typer" type=
"text"/>
8 <label for=
"color">Select label color:
</label>
9 <input name=
"color" id=
"red" value=
"red" type=
"radio"/>Red
10 <input name=
"color" id=
"green" value=
"green" type=
"radio"/>Green
12 <input name=
"submit" type=
"submit" value=
"Add Label"/>
14 <div id=
"update_butter" style=
"display:none"></div>
16 var butter
= document
.getElementById('update_butter');
18 var textProperty
= butter
['innerText'] ? 'innerText' : 'textContent';
21 function registerListener(fn
) {
25 function updateDom() {
26 butter
.style
.display
= 'block';
27 butter
[textProperty
] = 'Updating';
32 function disableForm() {
33 var inputs
= document
.getElementsByTagName('input');
34 for (var i
= 0, input
; input
= inputs
[i
]; ++i
) {
35 input
.disabled
= true;
39 function enableForm() {
40 var inputs
= document
.getElementsByTagName('input');
41 for (var i
= 0, input
; input
= inputs
[i
]; ++i
) {
42 input
.disabled
= false;
47 var length
= butter
[textProperty
].substring('Updating'.length
).length
;
49 butter
[textProperty
] += '.';
50 window
.setTimeout(tick
, 500);
53 var div
= document
.createElement('div');
54 var colors
= document
.forms
[0].color
;
55 for (var i
= 0, color
; color
= colors
[i
]; ++i
) {
57 div
.style
.backgroundColor
= color
.value
;
61 div
[textProperty
] = document
.forms
[0].typer
.value
;
62 div
.className
= 'label';
63 document
.forms
[0].typer
.value
= '';
64 document
.body
.appendChild(div
);
66 butter
[textProperty
] = 'Done!';
68 window
.setTimeout(function() {
69 while (listeners
.length
) {
71 listeners
.shift()(div
[textProperty
]);
73 butter
[textProperty
] = "Exception seen: " + e
;