TypeError:morphSearch.querySelector(...)为null

时间:2015-07-29 19:36:53

标签: javascript typeerror selectors-api

任何人都可以用我的代码解决我的问题(我刚从调试模式发现它)

<script type="text/javascript">
    (function() {
        var morphSearch = document.getElementById( 'morphsearch' ),
            input = morphSearch.querySelector( 'input.morphsearch-input' ),
            ctrlClose = morphSearch.querySelector( 'span.morphsearch-close'),
        // ...
</script>

这不是我所有的代码,它很长,所以我只把它的第一行。

在调试模式下,我收到此错误:

  

TypeError:morphSearch.querySelector(...)为null

以下是生成的标记:http://pastebin.com/P6tfvcZS

这个问题有解决方案吗?

1 个答案:

答案 0 :(得分:0)

发现了这个......

var offsets = morphsearch.getBoundingClientRect();

morphSearch是错误的情况,我认为它应该是......

var offsets = morphSearch.getBoundingClientRect();

我还将您的var语句分开了。最后一个看起来像这样......

isOpen = isAnimating = false,

我不认为这是有效的,请尝试这样。

  var morphSearch = document.getElementById( 'morphsearch' );
  var input = morphSearch.querySelector( 'input.morphsearch-input' );
  var ctrlClose = morphSearch.querySelector( 'span.morphsearch-close' );
  var isOpen = false;
  var isAnimating = false;

那些querySelector似乎在起作用......

实际上,从上面的一方来看,我认为我找到了唯一不起作用的querySelector

尝试更改此内容......

morphSearch.querySelector( 'button[type="submit"]' ).addEventListener( 'click', function(ev) { ev.preventDefault(); } );

要...

morphSearch.querySelector( 'input.morphsearch-submit' ).addEventListener( 'click', function(ev) { ev.preventDefault(); } );

应该做的一切。