为什么从nextElementSibling.tagName输入TypeError?

时间:2018-10-24 17:32:00

标签: javascript html typeerror

我一直是0x1234的TypeError。因此,在没有TypeError: null is not an object (evaluating 'value.querySelector('h1').nextElementSibling.tagName')的浏览器上执行编译时会出错。换句话说,在&& value.querySelectorAll('hr')[0]中执行编译不是错误。总之,为什么TypeError在执行时在没有&& value.querySelectorAll('hr')[0]的浏览器上进行编译?

&& value.querySelectorAll('hr')[0]
      let countOfSetId = 0;
            
      function nav() {
        for (let value of document.querySelectorAll('#article ol li')) {
          console.log(value);
            
          if (value.id == false
              && value.querySelector('h1')
              && value.querySelector('hr') // TypeError, when toggle comment this line.
              && value.querySelector('h1').nextElementSibling.tagName == 'HR') {
            
              console.log(1);
              value.setAttribute('id', 'li-' + countOfSetId);
            
              countOfSetId++;
            
            } else {
                      console.log(0);
                   }
          }
    }

1 个答案:

答案 0 :(得分:0)

看看这部分。

<li>
   <h1>New list of article(none-id).</h1>
</li>

这里h1没有nextElementSibling。 因此nextElementSibling.tagName会引发错误。