我目前正面临这个问题,其中queryselector返回null,但是我的类确实存在。我知道null是由于尚未渲染元素并且首先执行了javascript。我尝试使用DOMLoaded
,但是在我的javascript中包括样式。因此,发生了一个冲突,即我的JavaScript必须首先加载,这样我的元素才能继承样式。
对此有什么解决办法吗?
我的代码:
const _C = document.querySelector('.container'),
N = _C.children.length;
let i = 0,
x0 = null;
function unify(e) {
return e.changedTouches ? e.changedTouches[0] : e
};
function lock(e) {
x0 = unify(e).clientX
};
function move(e) {
if (x0 || x0 === 0) {
let dx = unify(e).clientX - x0,
s = Math.sign(dx);
if ((i > 0 || s < 0) && (i < N - 1 || s > 0))
_C.style.setProperty('--i', i -= s);
x0 = null
}
};
_C.style.setProperty('--n', N);
_C.addEventListener('mousedown', lock, false);
_C.addEventListener('touchstart', lock, false);
_C.addEventListener('mouseup', move, false);
_C.addEventListener('touchend', move, false);
<div class='container'>
<img src='https://images.unsplash.com/photo-1514117445516-2ecfc9c4ec90?ixlib=rb-0.3.5&q=85&fm=jpg&crop=entropy&cs=srgb&ixid=eyJhcHBfaWQiOjE0NTg5fQ&s=0e0b58fcf67fa6e8a010322d617e39af' alt='Mountain massif, sunbathed, partly covered in show.'
/>
<img src='https://images.unsplash.com/photo-1510325805092-2951ab330b7d?ixlib=rb-0.3.5&q=85&fm=jpg&crop=entropy&cs=srgb&ixid=eyJhcHBfaWQiOjE0NTg5fQ&s=017cf46443f4821a375c20e8c68e37f0' alt='Tiny bird with pale brown, orange and white feathers in an evergreen tree.'
/>
<img src='https://images.unsplash.com/photo-1514848567240-a81cb051807a?ixlib=rb-0.3.5&q=85&fm=jpg&crop=entropy&cs=srgb&ixid=eyJhcHBfaWQiOjE0NTg5fQ&s=3a0e476ab712db0eb68ab121a21c54de' alt='Close-up of yellow rose opening up.' />
<img src='https://images.unsplash.com/photo-1465408522361-a6f502298219?ixlib=rb-0.3.5&q=85&fm=jpg&crop=entropy&cs=srgb&ixid=eyJhcHBfaWQiOjE0NTg5fQ&s=7a6bd1244c42d1dbd3984a4c13981666' alt='Fast and foamy creek in the middle of the forest.'
/>
<img src='https://images.unsplash.com/photo-1503843778847-2b8bdce2ed3d?ixlib=rb-0.3.5&q=85&fm=jpg&crop=entropy&cs=srgb&ixid=eyJhcHBfaWQiOjE0NTg5fQ&s=d547781176ce182eeeb7303bac05abf4' alt='Fluffy little tabby with blue eyes climbing up a tree.'
/>
</div>