【发布时间】:2017-08-02 17:06:58
【问题描述】:
我应该根据我按 [RGBY] 的键来更改每个 div 的背景颜色。按 R 会使它们变为红色,按 G 变为绿色等。它现在不起作用,我不知道为什么。
除了主要问题,我还有一些其他问题:
首先,我应该在.addEventListener 上使用文档还是窗口来进行这个特定的练习?
第二,在document.addEventListener("keydown", switchColor)
我应该这样做还是改用document.addEventListener("keydown", switchColor(e))?我对此感到困惑,因为我的switchColor 函数是这样构建的:const switchColor = e => {...}
const divList = document.querySelectorAll("div");
document.addEventListener("keydown", switchColor); // this or switchColor(e) ?
//would 'window.addEventListener' be okay in here as well ??
const switchColor = e => {
let color = "n/a";
switch (e.keyCode) {
case 82: color = red; break;
case 89: color = yellow; break;
case 71: color = green; break;
case 66: color = blue; break;
}
divList.forEach(value => {
value.style.backgroundColor = color;
});
}
<body>
<p>Press the R (red), Y (yellow), G (green) or B (blue) key to change paragraph colors accordingly.</p>
<h1>Paragraph 1</h1>
<div>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec dignissim fringilla dapibus. Curabitur placerat efficitur
molestie. Quisque quis consequat nibh. Aenean feugiat, eros eget aliquam vulputate, leo augue luctus lectus, non
lobortis libero quam non sem. Aliquam sit amet tincidunt ex, mollis interdum massa.</div>
<h1>Paragraph 2</h1>
<div>Vivamus at justo blandit, ornare leo id, vehicula urna. Fusce sed felis eget magna viverra feugiat eget nec orci. Duis
non massa nibh. Aenean vehicula velit a magna lobortis tempor ut quis felis. Proin vitae dui a eros facilisis fringilla
ut ut ante.</div>
<h1>Paragraph 3</h1>
<div>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis sit amet pharetra massa. Nulla blandit erat nulla, et scelerisque
libero varius ut. Praesent bibendum eu magna ullamcorper venenatis. Sed ut pellentesque leo. Sed ultrices sapien
consequat odio posuere gravida.</div>
</body>
</html>
【问题讨论】:
标签: javascript html dom dom-events addeventlistener