Мой код:
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
}
Когда я пытаюсь использовать что-то вроде $('input').value(), это не работает, это просто приводит к неопределенности, я не знаю почему, но я думаю, что это как-то связано с self.el.value. Спасибо.
Стрелочные функции нуждаются в операторе return, если они заключены в {}
. Использовать:
value: ()=>{
return self.el.value;
}
Кроме того, вы не можете использовать фигурные скобки.
value: ()=>self.el.value;
спасибо, это сработало, я думаю, потому что другие методы меняют что-то вроде id = id, но это просто дает значение.
У меня была знакомая проблема, в моем случае это было то, что я связал скрипт перед объектом HTML. Проверьте и вы сами
document.querySelector(selector)
возвращает список HTML-элементов, возможно, проблема в этом.