improve DOMElement.prototype.on
add index method