LoginSignup
tqwko_05
@tqwko_05

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

HTMLのonclick属性について

解決したいこと

画面上で任意のボタンを押下した際に、URLパラメータを付与すること考えています。
・プルダウンで2つの項目を選択できるボタン
・同様のプルダウンボタンが2箇所にある(遷移先は同じ)
このとき、ボタンの状態とどちらのボタンが選択されたか?をparams()という関数の引数に定義しようとしています。
filter = 1,2
place = 1,2

引数を1つ(filter)のみの場合は押したボタンによってうまくURLパラメータがつくのですが、新たにplaceという引数を追加して条件分岐を書き加えたところ、ボタンが反応せずデバッグでもエラーを見られずに困っております。。

どなたかご教示いただけると幸いです。
よろしくお願いいたします。

発生している問題・エラー

//ボタンA
<a href="/sample" onclick="params(1,1)"><span class="title">プルダウン1を表示</span></a>
<a href="/sample" onclick="params(1,2)"><span class="title">プルダウン2を表示</span></a>

//ボタンB
<a href="/sample" onclick="params(2,1)"><span class="title">プルダウン1を表示</span></a>
<a href="/sample" onclick="params(2,2)"><span class="title">プルダウン2を表示</span></a>

<script>
function shibori(filter, place) {
        var params;
        // ボタンAのとき
        if (place == 1) {
            if (filter == 1) {
                params= "place1_filter1";
            } else if (filter == 1) {
                params= "place1_filter2";
            }

          // ボタンBのとき
        } else if (place == 2) {
            if (filter == 1) {
                params= "place2_filter1";
            } else if (filter == 1) {
                params = "place2_filter2";
            }
        }
    window.location = params;
}
</script>
0

1Answer

質問文中には「params()という関数」とありますが、実際にコードに記載されている関数名は「shibori」なので、
各aタグのonlickは、
onclick="params(X,X)"
ではなく、
onlick="shibori(X,X)"
と変える必要があります。

また、
window.location = params
は、変数 params に代入された値("place1_filter1"等)をURLと見做してとしてページ遷移してしまいます。
現在のページのURLにパラメータを付与したいのであれば、
window.location += "?" + params
等に変更する必要があるかと思います。

0

Comments

  1. @tqwko_05

    Questioner
    返答遅れてしまい申し訳ありません。
    上記ご回答いただきありがとうございます!

    こちら元々のコードに誤りがあり申し訳ありませんでした。。
    また、window.locationについても、認識が誤っていたため自分で調べなおし、目的とするパラメータを付与することができました!
    アドバイス大変助かりました。ありがとうございます(_ _)

Your answer might help someone💌