cari

Rumah  >  Soal Jawab  >  teks badan

javascript - kaedah eksport melaporkan ralat yang tidak ditentukan selepas mengeksport

Oleh kerana jquery tidak disepadukan pada permulaan projek, banyak kaedah ditulis secara asli. Hari ini saya pergi ke dalam talian untuk mencari beberapa kaedah untuk memanipulasi nama kelas, seperti berikut:

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)
    }  
}

Tetapi apabila saya menggunakannya, saya selalu mendapat ralat, seperti berikut:

Uncaught TypeError: Cannot read property 'hasClass' of undefined
    at addClass (Route.js?7c64bfe…:27892)
    at HTMLpElement.item.onclick (Route.js?7c64bfe…:139726)

Saya mencelah dan menyahpepijat, tetapi masih tidak dapat mencari punca masalah. Saya tertanya-tanya adakah di antara anda pernah mengalami masalah yang sama?

高洛峰高洛峰2698 hari yang lalu1003

membalas semua(2)saya akan balas

  • ringa_lee

    ringa_lee2017-06-26 10:59:31

    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)
        }  
    }

    Memang betul untuk memanggil addClass dan removeClass dalam toggleClass Mengapa anda masih ingat menambah ini di hadapan hasClass?

    balas
    0
  • 習慣沉默

    習慣沉默2017-06-26 10:59:31

    Ia bergantung pada objek yang dirujuk dalam this.hasClass() anda. Anda boleh menyemak sama ada ini merujuk kepada objek global

    balas
    0
  • Batalbalas