如何在 React 上单击父元素时触发子元素?
How to trigger child element while clicking parent element on React?
所以我在 Freecodecamp 上做一个鼓机项目,我没有达到这个条件。
”
当我单击 .drum-pad 元素时,应触发其子元素中包含的音频剪辑。
“
那么如何在单击或按下父元素时触发子元素(在本例中为音频元素,播放音频)?
我写了这样的东西
class Drumset extends React.Component {
constructor(props) {
super(props);
this.handleClick = this.handleClick.bind(this)
}
handleClick(e){
this.inputElement.click()
}
render() {
return (
<div>
<div id="drum-machine" class="containerx box-middle">
<div id="display">
<div class="container">
<div class="row">
<div class="col">
<button type="button" class="drum-pad" id="Heater-1" onClick={this.handleClick}>
Q
<audio
class="clip"
id="Q"
src="https://s3.amazonaws.com/freecodecamp/drums/Heater-1.mp3"
type="audio/mpeg"
></audio>
好吧,我尝试将 onClick 事件放在内部元素上,这也不起作用。
您可以通过搜索 DOM 然后调用 .play()
来获取您的音频元素。
因此您的 onClick
处理程序变为:
handleClick(e){
const audio = document.getElementById("Q");
audio.play();
}
如果您有多个按钮,所有按钮内部都只有 1 个音频标签,您可以使用一个通用的 onClick
处理程序并从事件的目标中获取子音频元素。
handleClick(e) {
const audio = e.target.children[0];
audio.play();
};
你好写在内部点击函数中写这个
//innerclick function
Const Innerclick(e)=>{
e.stoppropagation()
// do the job here
}
这里是 Jsx 代码html
所以我在 Freecodecamp 上做一个鼓机项目,我没有达到这个条件。
” 当我单击 .drum-pad 元素时,应触发其子元素中包含的音频剪辑。 “ 那么如何在单击或按下父元素时触发子元素(在本例中为音频元素,播放音频)?
我写了这样的东西
class Drumset extends React.Component {
constructor(props) {
super(props);
this.handleClick = this.handleClick.bind(this)
}
handleClick(e){
this.inputElement.click()
}
render() {
return (
<div>
<div id="drum-machine" class="containerx box-middle">
<div id="display">
<div class="container">
<div class="row">
<div class="col">
<button type="button" class="drum-pad" id="Heater-1" onClick={this.handleClick}>
Q
<audio
class="clip"
id="Q"
src="https://s3.amazonaws.com/freecodecamp/drums/Heater-1.mp3"
type="audio/mpeg"
></audio>
好吧,我尝试将 onClick 事件放在内部元素上,这也不起作用。
您可以通过搜索 DOM 然后调用 .play()
来获取您的音频元素。
因此您的 onClick
处理程序变为:
handleClick(e){
const audio = document.getElementById("Q");
audio.play();
}
如果您有多个按钮,所有按钮内部都只有 1 个音频标签,您可以使用一个通用的 onClick
处理程序并从事件的目标中获取子音频元素。
handleClick(e) {
const audio = e.target.children[0];
audio.play();
};
你好写在内部点击函数中写这个
//innerclick function
Const Innerclick(e)=>{
e.stoppropagation()
// do the job here
}
这里是 Jsx 代码html