1. 程式人生 > 其它 >成功解決 TypeError: Cannot read property ‘scrollTop‘ of null

成功解決 TypeError: Cannot read property ‘scrollTop‘ of null

技術標籤:jsjavascriptvue.jshtml

  • 今天博主遇到這個問題這首頁寫了這個滾動函式(這是原版的)但是從這個頁面跳轉其他頁面後會報錯
 /** 獲取DOM元素 **/
    getList() {
      let that = this
      let ul1 = document.getElementById('comment1')
      let ul2 = document.getElementById('comment2')
      let ulbox = document.getElementById('review_box')
      let speed =
30 ulbox.scrollTop = 0 ul2.innerHTML = ul1.innerHTML ulbox.onmouseover = function() { clearInterval(myScroll) } ulbox.onmouseout = function() { myScroll = setInterval(that.rollStart, speed) } var myScroll = setInterval(that.rollStart, speed) }
, // 開始滾動函式 rollStart() { // 上面宣告的DOM物件為區域性物件需要再次宣告 var ul1 = document.getElementById('comment1') var ul2 = document.getElementById('comment2') var ulbox = document.getElementById('review_box') // console.log(ulbox.scrollTop) // console.log(ul1.scrollHeight) if
(ulbox.scrollTop >= ul1.scrollHeight) { ulbox.scrollTop = 0 } else { ulbox.scrollTop++ } }

的在這裡插入圖片描述
後來博主打斷點後發現 ul1 和 ulbox都是null 我懷疑是vue還沒有把他們從DOM樹了給解除安裝下來。所以改動了一下

 /** 獲取DOM元素 **/
    getList() {
      let that = this
      let ul1 = document.getElementById('comment1')
      let ul2 = document.getElementById('comment2')
      let ulbox = document.getElementById('review_box')
      let speed = 30
      ulbox.scrollTop = 0
      ul2.innerHTML = ul1.innerHTML
      ulbox.onmouseover = function() {
        clearInterval(myScroll)
      }
      ulbox.onmouseout = function() {
        myScroll = setInterval(that.rollStart, speed)
      }
      var myScroll = setInterval(that.rollStart, speed)
    },
    // 開始滾動函式
    rollStart() {
      // 上面宣告的DOM物件為區域性物件需要再次宣告
      var ul1 = document.getElementById('comment1')
      var ul2 = document.getElementById('comment2')
      var ulbox = document.getElementById('review_box')
      // console.log(ulbox.scrollTop)
      // console.log(ul1.scrollHeight)
      if (ulbox !== null && ul1 !== null) {
        if (ulbox.scrollTop >= ul1.scrollHeight) {
          ulbox.scrollTop = 0
        } else {
          ulbox.scrollTop++
        }
      }
    }

求大神指點一二