element.js 810 B

12345678910111213141516171819202122232425262728293031
  1. export default class ElementClass {
  2. constructor (el) {
  3. this.el = this.queryLabel(el)
  4. }
  5. // 底版本未暴露slots里的$el, 所以通过获取label的形式
  6. queryLabel (el) {
  7. return [...el.querySelectorAll('label') ?? []]
  8. }
  9. // 根据name获取需要定位的item
  10. getItemByName = (name) => {
  11. return this.el.reduce((el, currentEl) => {
  12. const prop = currentEl.getAttribute('for')
  13. if (prop === name) {
  14. el = currentEl.parentNode
  15. }
  16. return el
  17. }, null)
  18. }
  19. // 获取第一条错误项
  20. getFirstErrorItem = () => {
  21. let target = null
  22. for (let i = 0, len = this.el.length;i<len;i++) {
  23. const node = this.el[i].parentNode
  24. if (node.classList.contains('is-error')) {
  25. target = node
  26. break
  27. }
  28. }
  29. return target
  30. }
  31. }