ウェブアプリケーションのドロップダウンメニューを作成しました。アイコンをクリックすると、ドロップダウンメニューが開きます。ドロップダウンメニュー以外の場所をクリックすると、ドロップダウンメニューが削除されます。私の現在のアプローチでは、要素の外側をクリックすると要素が削除されます。しかし、その後、アイコンをクリックするとドロップダウンメニューを開くことができません。どうすれば修正できますか?javascriptの要素の外側をクリックすると要素を削除するには?
class DropDown extends Component {
constructor(props) {
super(props);
this.myFunction = this.myFunction.bind(this);
this.state = {
openmenu:false
}
};
myFunction(e) {
e.stopPropagation();
this.setState({
openmenu: !this.state.openmenu
})
render() {
window.onclick = function (event) {
if (!event.target.matches('myDropdown')) {
document.getElementById('myDropdown2').remove();
}
}
return (
<div className="dropdown small_font" id="myDropdown" >
<i className="fa fa-cog user_settings_icon" style={{marginTop: '6px'}} onClick={this.myFunction}
aria-hidden="true"></i>
{this.state.openmenu?
<div className="dropdown-content" id="myDropdown2">
<a className="dropdown_item"><i className="fa fa-trash-o margin_right10px" aria-hidden="true"></i>Delete</a>
<a className="dropdown_item"><i className="fa fa-flag-o margin_right10px" aria-hidden="true"></i>Report</a>
</div>:null
}
</div>
);
}
}
などwindow.onclick
などrender
方法でイベントを使用して二度目
Uncaught DOMException: Failed to execute 'removeChild' on 'Node': The node to be removed is not a child of this node.
ドロップダウンメニューを削除しています。なぜあなたは再びそれを開こうとしているのですか? あなたの言葉を誤って解釈しましたか? –
あなたは適切な答えを得ていないと聞きましたか?あなたのために何ができますか?私のアプローチを試しましたか? – mersocarlin
@mersocarlin yh私はonBlur関数を使用して動作するようにしました – CraZyDroiD