function getValType(elem) {
var ret = elem.tagName.toLowerCase()
return ret === "input" && /checkbox|radio/.test(elem.type) ? "checked" : ret
}
var valHooks = {
"select:get": function(node, value) {
console.log('select:get')
},
"select:set": function(node, values, optionSet) {
console.log('select:set')
}
}
function val(node, value) {
var get = arguments.length === 1
var access = get ? ":get" : ":set"
var fn = valHooks[getValType(node) + access]
if (fn) {
fn(node, value)
} else if (get) {
return node.value
} else {
node.value = value
}
}
val(document.querySelector('select'))
val(document.querySelector('input'), 2)