我已经为这些按钮编写了此代码,因此当我单击它们时,背景颜色会更改,但是不起作用。似乎是什么问题?
std::thread t1{static_cast<void (*)(std::unique_ptr<A>)>(handleObj),obj};
答案 0 :(得分:1)
您必须使用.querySelectorAll
在所有.button
元素上添加一个侦听器。
我还更正了您的addEventListener
let btns = document.querySelectorAll('.button')
btns.forEach(btn => {
btn.addEventListener('click', evt => {
document.body.style.background = evt.target.id
})
})
.button { cursor: pointer; }
<div class="canvas">
<h1>Color Scheme Switcher</h1>
<span class="button" id="grey">Grey</span>
<span class="button" id="white">White</span>
<span class="button" id="blue">Blue</span>
<span class="button" id="yellow">Yellow</span>
</div>
答案 1 :(得分:1)
您的代码有两个问题:
1)document.querySelector
仅返回 first 匹配元素
2)click
事件没有带有此类参数的函数。
更好的代码是:
document.querySelectorAll('.button')
.forEach(btn =>
btn.addEventListener('click', () => document.body.style.background = btn.id)
);
(这里我再次重用btn
而不是使用事件中的数据,因为我已经知道您按下了哪个按钮,因此无需弄乱ev.target...
答案 2 :(得分:0)
使用document.querySelectorAll代替document.querySelector
let buttons = document.querySelectorAll('.button')
buttons.forEach(element=>{
element.addEventListener('click', (e) => {
document.body.style.background = e.target.id
})
})
span{
padding: 4px 6px;
border: 1px solid;
cursor: pointer;
}
#grey{
background :grey;
}
#white{
background :white;
}
#blue{
background :blue;
}
#yellow{
background :yellow;
}
<div class="canvas">
<h1>Color Scheme Switcher</h1>
<span class="button" id="grey">gray</span>
<span class="button" id="white">white</span>
<span class="button" id="blue">blue</span>
<span class="button" id="yellow">yellow</span>
</div>
您可以