无法读取滑块上 null 的 属性 'addEventListener'
Cannot read property 'addEventListener' of null on slider
我有一个滑块,当它触发鼠标移动事件时,我想在一个段落中显示它的值。
这是我使用的代码:
var exit = document.getElementsByTagName("p");
var slide = document.getElementById('slider');
window.addEventListener("load", function(){
slide.addEventListener("mousemove", function() {
console.log(slide.value);
});
Html
<input type="range" value="0" min="0" max="10" id="slider">
<p></p>
我的问题是出现 "Cannot read property 'addEventListener' of null" 错误。有什么想法吗?
移行
var slide=document.getElementById('slider');
进入您的 window 加载回调。问题可能是当您初始化幻灯片时 dom 没有加载,所以它不在那里。
兄弟试试这个..
var exit = document.getElementsByTagName("p");
var slide = document.getElementById('slider');
slide.addEventListener("mousemove", function() {
console.log(slide.value);
$('p').text('value : '+slide.value);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input type="range" value="0" min="0" max="10" id="slider">
<p></p>
我认为您想为 input
事件而不是 mousemove
事件添加事件侦听器。
input
事件在范围输入更改值时触发,而不是在鼠标恰好移动到范围选择器上时触发。
正如@Gersey 指出的那样,当用户使用箭头键更改值时,将触发 input
事件。
这是突出显示问题的演示
window.onload = function() {
var slide = document.getElementById('slider'),
p1 = document.querySelector('#oninput'),
p2 = document.querySelector('#onmousemove');
slide.addEventListener("input", function() {
p1.textContent += ' ' + slide.value;
});
slide.addEventListener("mousemove", function() {
p2.textContent += ' ' + slide.value;
});
};
div.display {
display: inline-block;
width: 40%;
height: 200px;
border: 1px solid black;
}
div {
overflow: hidden;
}
<input type="range" value="0" min="0" max="10" id="slider" />
<div>
<div class="display" id="oninput"></div>
<div class="display" id="onmousemove"></div>
</div>
我有一个滑块,当它触发鼠标移动事件时,我想在一个段落中显示它的值。
这是我使用的代码:
var exit = document.getElementsByTagName("p");
var slide = document.getElementById('slider');
window.addEventListener("load", function(){
slide.addEventListener("mousemove", function() {
console.log(slide.value);
});
Html
<input type="range" value="0" min="0" max="10" id="slider">
<p></p>
我的问题是出现 "Cannot read property 'addEventListener' of null" 错误。有什么想法吗?
移行
var slide=document.getElementById('slider');
进入您的 window 加载回调。问题可能是当您初始化幻灯片时 dom 没有加载,所以它不在那里。
兄弟试试这个..
var exit = document.getElementsByTagName("p");
var slide = document.getElementById('slider');
slide.addEventListener("mousemove", function() {
console.log(slide.value);
$('p').text('value : '+slide.value);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input type="range" value="0" min="0" max="10" id="slider">
<p></p>
我认为您想为 input
事件而不是 mousemove
事件添加事件侦听器。
input
事件在范围输入更改值时触发,而不是在鼠标恰好移动到范围选择器上时触发。
正如@Gersey 指出的那样,当用户使用箭头键更改值时,将触发 input
事件。
这是突出显示问题的演示
window.onload = function() {
var slide = document.getElementById('slider'),
p1 = document.querySelector('#oninput'),
p2 = document.querySelector('#onmousemove');
slide.addEventListener("input", function() {
p1.textContent += ' ' + slide.value;
});
slide.addEventListener("mousemove", function() {
p2.textContent += ' ' + slide.value;
});
};
div.display {
display: inline-block;
width: 40%;
height: 200px;
border: 1px solid black;
}
div {
overflow: hidden;
}
<input type="range" value="0" min="0" max="10" id="slider" />
<div>
<div class="display" id="oninput"></div>
<div class="display" id="onmousemove"></div>
</div>