javascript - export 导出后方法报错undefined
本文介绍了javascript - export 导出后方法报错undefined的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
因为项目一开始没有集成jquery,所以很多的方法都是用原生来写的。今天到网上找了几个操作类名的方法,如下:
export const hasClass = (el, cls) => {
return el.className.match(new RegExp('(\\s|^)' + cls + '(\\s|$)'))
}
export const removeClass = function (el, cls) {
if (hasClass(el, cls)) {
var reg = new RegExp('(\\s|^)' + cls + '(\\s|$)')
el.className = el.className.replace(reg, ' ')
}
}
export const addClass = function (el, cls) {
if (!this.hasClass(el, cls)) el.className += " " + cls
}
export const toggleClass = (el,cls) => {
console.log(hasClass)
if(hasClass(el,cls)){
removeClass(el, cls)
}else{
addClass(el, cls)
}
}
但是在用的时候却一直会报错,如下:
Uncaught TypeError: Cannot read property 'hasClass' of undefined
at addClass (Route.js?7c64bfe…:27892)
at HTMLDivElement.item.onclick (Route.js?7c64bfe…:139726)
我打断点调试了下,还是没能找到问题出现的原因。不知道各位大神有没有遇到过同样问题的?
解决方案
export const addClass = function (el, cls) {
if (!this.hasClass(el, cls)) el.className += " " + cls
}
就是this的问题。直接把this.去掉,固定调用模块内部的hasClass方法。
export const toggleClass = (el,cls) => {
console.log(hasClass)
if(hasClass(el,cls)){
removeClass(el, cls)
}else{
addClass(el, cls)
}
}
toggleClass里调用addClass和removeClass倒是对的,怎么想起来调用hasClass时前面加this的?
这篇关于javascript - export 导出后方法报错undefined的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文