Javascript 如何防止div元素滚动?

Javascript 如何防止div元素滚动?,javascript,html,events,focus,Javascript,Html,Events,Focus,我有一个包含p元素的div元素。 我控制了div的滚动位置(设置scrollTop属性)和p的onclick事件。 问题在于,当我点击一个p,然后按下向下或向上箭头键时,div会在我滚动之后自动滚动。 div没有焦点,没有设置onkeydown或onkeypress事件 下面是一个可以应用解决方案的代码示例。在我点击了一个p之后,我需要防止div在按键事件(上下箭头)上滚动 <div style="height: 60px; overflow: auto; border: 1px soli

我有一个包含p元素的div元素。 我控制了div的滚动位置(设置scrollTop属性)和p的onclick事件。 问题在于,当我点击一个p,然后按下向下或向上箭头键时,div会在我滚动之后自动滚动。 div没有焦点,没有设置onkeydown或onkeypress事件

下面是一个可以应用解决方案的代码示例。在我点击了一个p之后,我需要防止div在按键事件(上下箭头)上滚动

<div style="height: 60px; overflow: auto; border: 1px solid black">
<p>Line 1</p>
<p>Line 2</p>
<p>Line 3</p>
<p>Line 4</p>
<p>Line 5</p>
<p>Line 6</p>
</div>

第1行

第2行

第3行

第4行

第5行

第6行


浏览器为您进行滚动。您需要的是在事件到达浏览器之前捕获导致滚动的事件,然后取消它们

您可以捕获keydown/keyup/keypress事件,并在事件处理程序中捕获(假设jQuery)

如果您不想使用jQuery,请检查本机preventDefault,其工作原理如下

document.getElementById('someId').addEventListener(
    'keyup', function(evt) { evt.preventDefault(); }, false
);

请发布您的代码谢谢,但我不会说jQuery.Updated。但是您确实应该使用jQuery。这将为您节省很多麻烦。无论如何,我认为您的答案与此无关。我将addEventListener方法应用到我的div中,用于keyup和keypress事件。它不起作用。您完全理解我的问题,但我不同意您的回答。@donkeydown:显示您的代码,以便我们了解您正在尝试的内容
document.getElementById('someId').addEventListener(
    'keyup', function(evt) { evt.preventDefault(); }, false
);