Mi código:
function $(selector){ var self = { el:document.querySelector(selector), html:()=> self.el.innerHTML, on:(event, callback)=>{ document.addEventListener(event, callback) }, hide:()=> { self.el.style.display = 'none' }, attr:(attr, value)=>{ if(value == null){ self.el.getAttribute(attr) }else{ self.el.setAttribute(attr, value); } }, setHTML:(code)=>{ self.el.innerHTML = ""; self.el.innerHTML = code; }, createChld:(childElement, id, clss, innerHTML)=>{ var el = document.createElement(childElement); el.setAttribute('id', id); el.setAttribute('class', clss); el.innerHTML = innerHTML; self.el.appendChild(el); }, addClass:(clss)=>{ self.el.classList.add(clss) }, addId:(id)=>{ self.el.id = id; }, value:()=>{ self.el.value; } } return self }Cuando trato de usar algo como $('input').value() no funciona, simplemente resulta indefinido, no sé por qué, pero creo que tiene algo que ver con self.el.value. Gracias.
Las funciones de flecha necesitan una declaración de retorno si están envueltas con {} . Usar:
value: ()=>{ return self.el.value; }Alternativamente, no podría usar corchetes.
value: ()=>self.el.value;Tuve un problema familiar, en mi caso fue que he enlazado el script antes que el objeto HTML. Compruébelo usted mismo también