|
home—lects—exams—hws
D2L—breeze (snow day)
You have already talked about javascript code and the DOM in WebI; we'll review those concepts in the context of improving an actual web page.
Do not attempt to write any significant javascript without a decent debugging tool like Firebug or Chrome Tools' javascript console window help. At least, not if you value your sanity. In particular:
We'll show-source, and discuss evolution of the javascript program. For each version: discuss how much work it would be to add another category (animal)? (And: what is the least conceivable amount of work/info required?)
teacher's note:We got this far, having also discussed magic quotes and php's `gpc_special_quotes` (and, `trim`).
teacher's note:On day 2, we got this far. I didn't demo the .js console window, nor actually *showing* nodes being inserted or not, nor my own bugs/pitfalls in writing the demos, nor the idea of passing .js functions DOM-nodes directly rather than their id-name.
Applying the above: How can/should we generalize a Bingo card javscript?
Note: here's
an on-line javascript interpreter.
We'll use it to note that:
arrays are objects;
any object can have properties accessed via square-brackets;
but you should still iterate over arrays by indexing over [0,data.count).
You can also use “
Arrays in javascript are not associative -- the indices are only numeric.
However: any object (array or string or DOM-node or whatever) can have
properties;
properties are key/value pairs.
So I guess every object could be used as an asssociate array incidentally.
This is discouraged, because other code might add properties to your object.
Just to muddle things thoroughly, properties can be assigned/retrieve
either through dot-notation (“
Arrays have a property named “length”. To demo, paste the below into this on-line javascript interpreter.
var a; a = [71,72,73]; a.foo = "huh"; writeln( "The length of a: " + a.length ); writeln( "The length of a: " + a['length'] ); writeln( "Using a regular for-loop, to loop over numeric indices:" ); for (var i = 0; i < a.length; ++i ) { writeln("at index i=" + i + ", a[i]=" + a[i] ); } writeln( "Using for-in, to loop over all *enumerable* properties:" ); for (var i in a) { writeln("at index i=" + i + ", a[i]=" + a[i] ); } writeln( "Note: the for-in loop will also include properties from the object's " + "parent object, and it's parent, etc." ); writeln( "Note: `length` is a property of the object, but the `for` loop doesn't " + "enumerate over it. That's because some properties can be tagged as " + "'non-enumerable' -- a concept invented just for for-each loops?" ); |
Tips for minimizing the difference between php and javascript code:
getDocElement('fname') |
This has the advantage that you can provide a default argument,
to use when the element doesn't exist [especially helpful in
php handling checkboxes, where if no checkboxes were selected
the lookup
Note:Finished here after day 3, w/ discussion of using debugger.
1Javascript error tools like Firebug or Chrome Tools' javascript console window help. ↩
home—lects—exams—hws
D2L—breeze (snow day)
©2015, Ian Barland, Radford University Last modified 2015.Oct.12 (Mon) |
Please mail any suggestions (incl. typos, broken links) to ibarlandradford.edu |