This one comes with a few caveats...

Changes:
1. Ditched the id and with block - values cached in global scope
2. Rewrite the table contents every blur
3. Fixed: Plain strings in cells were throwing an exception

Cons:
1. Because the table is rewritten onblur, tabbing no longer works and you have to click twice to edit another cell.
2. Bad cell values or formulas will cause the table to fail to render until you manually clear the value from localStorage