クリックしたボタンに応じてボックスが表示されるボタンをいくつか作成しようとしています。これを行うには、各ボックスに独自のクラスを指定し、関数に引数を渡して、ターゲットにするボックスを識別します。次に、この関数をページ上の各ボタンのonclick属性に割り当てます(イベントハンドラーを別のファイルに添付する必要があることはわかっています)。関数は次のとおりです。
var show = function(boxNumber){
if($(this).hasClass('shown')){
$(this).removeClass('shown');
$(this).html('Show');
$('.box'+boxNumber).fadeOut(1000);
}
else{
$(this).html('Hide');
$(this).addClass('shown');
$('.box'+boxNumber).fadeIn(1000);
}
};
html:
<span onclick="show(1)">Box 1</span>
<div class="box1"></div>
etc. for more boxes
ただし、この機能は機能しません。まず、ボタンのhtmlはクリックしても変化しないため、このキーワードはボタンをターゲットにしていないようです。ただし、このキーワードをボタンのクラスに置き換えると、正常に機能します。
次に、この関数はボックスを細かくフェードしますが、ボタンをもう一度クリックしても非表示になりません。
私は立ち往生しているので、どんな助けもいただければ幸いです!ありがとう。