【问题标题】:How can I fix - Uncaught TypeError: Cannot read property 'scrollHeight' of undefined我该如何解决 - 未捕获的类型错误:无法读取未定义的属性“scrollHeight”
【发布时间】:2017-08-08 09:35:00
【问题描述】:

我希望有人能帮助我解决这个问题。

我有一个用于 chrome 控制台的后续脚本,它在过去几天运行良好,但是今天运行它我开始收到此错误(如下)。 如果有人可以帮助我解决代码问题,我将不胜感激,代码和错误附在下面。提前感谢您的帮助。

var jq = document.createElement('script');
jq.src = "//ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"; //Loads JavaScript
document.getElementsByTagName('head')[0].appendChild(jq);
jQuery.noConflict()

window.setInterval(function(){
var x = 0;
$("button:contains('Follow')").each(
function(){ if($(this).text()=="Follow"){
if(x==2) return false; 
$(this).trigger("click");
$('._4gt3b').scrollTop($('._4gt3b')[0].scrollHeight);
x++;}
}
)
$('._4gt3b').scrollTop($('._4gt3b')[0].scrollHeight); console.log('loop');
}, 70000); 

这是我在运行脚本后收到的错误

>VM137:7 Uncaught TypeError: Cannot read property 'scrollHeight' of undefined  
        at HTMLButtonElement.<anonymous> (<anonymous>:7:40)  
        at Function.each (jquery.min.js:2)  
        at n.fn.init.each (jquery.min.js:2)  
        at <anonymous>:3:32   

【问题讨论】:

  • 你的 HTML 在哪里?
  • 您确定存在$('._4gt3b')[0]$('._4gt3b')[1] 元素吗?

标签: javascript jquery ajax console google-chrome-console


【解决方案1】:

看起来$('._4gt3b')[0]$('._4gt3b')[1] 不存在。

您可以通过先检查值来防止此错误,如下所示:

var element = $('._4gt3b')[1];
if ( element !== undefined ) {
    $('._4gt3b').scrollTop(element.scrollHeight);
}

【讨论】:

  • 感谢 Yoval 的回答,我试图解决这个问题,但问题仍然存在。你有其他想法吗?
  • 您现在在控制台中看到了什么? @user1944153
  • 我不确定我是否做对了一切,但我看到了相同的错误消息。 VM137:7 未捕获的类型错误:无法读取 HTMLButtonElement 处未定义的属性 'scrollHeight'。 (:7:40) at Function.each (jquery.min.js:2) at n.fn.init.each (jquery.min.js:2) 在 :3:32
【解决方案2】:

首先将 dom $('._4gt3b') 存储/缓存在某个变量中,例如$abc = $('._4gt3b') ,并通过长度或索引函数对dom是否存在进行javascript检查,然后你做逻辑。它将保护您的代码免受任何控制台错误的影响

【讨论】:

  • 我对此感到困惑,请您详细解释一下吗?
猜你喜欢
  • 1970-01-01
  • 2017-09-07
  • 1970-01-01
  • 2018-04-14
  • 2017-08-02
  • 2021-12-22
  • 2020-01-08
  • 2015-01-06
  • 2021-05-10
相关资源
最近更新 更多