成功解決 TypeError: Cannot read property ‘scrollTop‘ of null
阿新 • • 發佈:2020-12-29
- 今天博主遇到這個問題這首頁寫了這個滾動函式(這是原版的)但是從這個頁面跳轉其他頁面後會報錯
/** 獲取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++
}
}
}
求大神指點一二