【问题标题】:Cannot read property 'querySelector' of null in WordPress widget无法在 WordPress 小部件中读取 null 的属性“querySelector”
【发布时间】:2018-01-10 03:06:50
【问题描述】:

我在一个小部件中有这个 JS 代码,它在小部件加载的页面上运行良好。但是在页面上给出了错误(“new.js?ver=0.0.1:92 Uncaught TypeError: Cannot read property 'querySelector' of null”),它没有显示在此处的 jS 代码中 -

var
carousel = document.querySelector('.threedcarousel'),
figure = carousel.querySelector('figure'),
nav = carousel.querySelector('nav'),
numImages = figure.childElementCount,
theta =  2 * Math.PI / numImages,
currImage = 0
;

nav.addEventListener('click', onClick, true);

function onClick(e) {
 e.stopPropagation();

 var t = e.target;
 if (t.tagName.toUpperCase() != 'BUTTON')
 return;

if (t.classList.contains('next')) {
  currImage++;
}
else {
  currImage--;
}

figure.style.transform = `rotateY(${currImage * -theta}rad)`;
}

据我了解,由于小部件未加载其他页面,因此出现错误,但我如何解决错误?试过了还是不行

if(typeof carousel == 'undefined') {
var carousel = document.querySelector('.threedcarousel')
}

【问题讨论】:

  • 当然你的意思是if( typeof carousel != 'undefined' ) { ... 对吧?
  • 是的,也试过了。任何其他解决方法建议?
  • 你应该把这整件事包装成if声明
  • @MaciejKwas 感谢您的评论。我采取了不同的路线并从这个答案中解决了这个问题 - stackoverflow.com/questions/9578348/…

标签: javascript wordpress


【解决方案1】:

发布答案。

我一直在寻找在特定页面而不是所有页面上触发事件的方法。我最终使用了 -

在您的 page1.php 中,您有一个 $(document).ready(onPage1Load) 等其他页面。这将确保未注册意外事件处理程序。

StackOverflow link

【讨论】:

    猜你喜欢
    • 2021-07-27
    • 2021-06-21
    • 1970-01-01
    • 2017-07-30
    • 1970-01-01
    • 1970-01-01
    • 2022-06-22
    • 2022-08-14
    • 2016-01-14
    相关资源
    最近更新 更多