質問: $('#testsection').find('.testsection');(C) $(nonactiveInfo[changeNo]).addClass('active');(D) } ```
回答: $(nonactiveInfo[changeNo])というセレクタでは特定できないと思います。 いったんセレクタ文字列を変数に入れて、それを$(変数)とした方がいいでしょう。 しかも、やりたいことを実現するのには.find()を使う必要がなさそうな気がします。 もっとシンプルに考えてみてはどうでしょう? 1あるボタンが押されたとき、change()を実行する。 何個めの.testsectionを.activeにするか引数を渡す。 2.active(何個めかは関係ない)のclassを外す。 3引数の番号の.testsectionにclassを追加する。 ``` function change(changeNo) { $('.testsection.active').removeClass('active'); var nonactiveInfo = '.testsection:nth-child(' + changeNo + ')'; $(nonactiveInfo).addClass('active'); } ``` ただ、:nth-childは連続した兄弟要素の中での順序で指定することになるので、 提示のHTMLとは異なりほかの場所にも同じclassがあったりするなら また別のセレクタにしないといけませんね。 【追記】 コメントのとおり、動作しました。 サンプル じゃあ何がいけないのかな...と考えると、引数が合っていないのかな? ・0または1以外の存在しないindexを渡してしまっている? ・関係ない文字列やオブジェクトを渡してしまっている?