开发者问题收集

TypeError:导航到另一个页面时无法读取 null 的属性“offsetParent”

2018-08-08
5039

我使用代码在滚动时将 div 粘贴到顶部,并且 div 到达了顶部。

代码工作正常,但是导航到另一个页面时出现错误。

TypeError: Cannot read property 'offsetParent' of null

我的代码

render() {
  var startProductBarPos = -1;
  window.onscroll = function () {
    var bar = document.getElementById('nav');

    if (startProductBarPos < 0) startProductBarPos = findPosY(bar);

    if (window.pageYOffset > startProductBarPos) {
      bar.style.position = 'fixed';
      bar.style.width = '58.6%'
      bar.style.top = 0;
    } else {
      bar.style.position = 'relative';
      bar.style.width = '100%'
    }

  };

  function findPosY(obj) {
    var curtop = 0;
    if (typeof (obj.offsetParent) != 'undefined' && obj.offsetParent) {
      while (obj.offsetParent) {
        curtop += obj.offsetTop;
        obj = obj.offsetParent;
      }

      curtop += obj.offsetTop;
    } else if (obj.y) 
        curtop += obj.y;

    return curtop;
  };

  return(
    <div className="trait_type_header" id="nav">
    </div>
  );
}

此行显示错误的位置。

if (typeof (obj.offsetParent) != 'undefined' && obj.offsetParent) {

我认为导航到另一个页面时 obj 变为空。如果是这种情况,我该如何修复?

1个回答

尝试将

if (typeof (obj.offsetParent) != 'undefined' && obj.offsetParent)    

更改为

if (obj && obj.offsetParent)
Sasha Kos
2018-08-08