前提・実現したいこと
組み合わせを作る配列に「北海道」と「青森県」、「岩手県」の3県を入れる( base = ['北海道','青森県','岩手県']; )と、"北海道,青森県,岩手県,北海道、青森県,北海道、岩手県,青森県、岩手県,北海道、青森県、岩手県,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"という1県、2県の組み合わせ、3県の組み合わせが作られるところまではできました。
この組み合わせを作る配列( base = []; )に、チェックボックスで選択した都道府県( arr.push(pref[i].value); )を入れたいです。
これはOsclassで都道府県の複数検索に対応するために使います。Osclassの広告の住所で複数の都道府県を選択できるようにしました。広告の作成時に住所を「東京都」と「神奈川県」を選択すると、広告には"東京都、埼玉県"と表示されます。しかし、検索画面で「東京都」と入力しても、この広告は見つかりません。これは広告の住所が「東京都」と「神奈川県」という2県ではなく、「東京都、神奈川県」という1つのもの、完全一致による検索がされているためだと思います。
Osclassの検索プログラムが部分一致ではなく完全一致になっていると思うので、これを修正すれば良いのかもしれませんが、修正方法が分からないので、全ての組み合わせを作り、広告に記載された都道府県を探しますが、もしOslassの部分一致への修正方法をご教示いただければ幸いです。Osclassの修正すべき該当のコードと思われるものを記載いたします。
発生している問題
var base = ['北海道','青森県','岩手県'];という例えを記述していますが、ここにupdateData()で取得した配列を入れたいです。
また、組み合わせる数を"pref.length + 1;"と指定しているため、無駄に",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"が表示されてしまいます。チェックされた数を入れたいです。
// 組み合わせ var base = ['北海道','青森県','岩手県']; var join = []; const pref = document.getElementsByName('pref'); for (i = 1; i < pref.length + 1; i++) { join += get_combi(base, i) + ','; $("#arr").text(join); }
該当のソースコード
私が作成したコードです。
**codepen**でご確認ください。
OsclassのSearch.phpです。この辺りの完全一致を部分一致に修正できれば良いと思うのですが…。
"region"が都道府県です。
**codepen**でご確認ください。
試したこと
私が作成したコードに"return"を使ってみましたが、空の"arr"が渡されてしまいます。
"arr.push(pref[i].value);"されたものが欲しいです。
$(function() { function updateData() { const arr = []; const pref = document.getElementsByName('pref'); for (let i = 0; i < pref.length; i++) { if (pref[i].checked) { arr.push(pref[i].value); } } return { a: arr } } // 組み合わせ var base = updateData().a; var join = []; const pref = document.getElementsByName('pref'); for (i = 1; i < pref.length + 1; i++) { join += get_combi(base, i) + ','; $("#arr").text(join); } });
補足情報(FW/ツールのバージョンなど)
回答1件
あなたの回答
tips
プレビュー