function defaultGetNodeKey(node) {
  if (node) {
      return (node.getAttribute && node.getAttribute('id')) || node.id;
  }
}
The "value" attribute is special for the <input> element since it sets
the initial value. Changing the "value" attribute without changing the
"value" property will have no effect since it is only used to the set the
initial value.  Similar for the "checked" attribute, and "disabled".