質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.12%
Osclass

Osclassは、クラシファイド広告サイト(広告掲載用サイト)の構築に特化したCMSです。オープンソースで、PHP+MySQL構成で開発されています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

解決済

チェックボックスで選択した都道府県の組み合わせを作りたいです。または完全一致を部分一致へ変更したいです。

6EVILSTAR9
6EVILSTAR9

総合スコア11

Osclass

Osclassは、クラシファイド広告サイト(広告掲載用サイト)の構築に特化したCMSです。オープンソースで、PHP+MySQL構成で開発されています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

1回答

0リアクション

0クリップ

374閲覧

投稿2020/02/11 12:21

前提・実現したいこと

組み合わせを作る配列に「北海道」と「青森県」、「岩手県」の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/ツールのバージョンなど)

Osclass(v3.9.0)

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

Lhankor_Mhy

2020/02/12 01:53

このコードですと、` updateData()`はページが表示された時点で呼び出されるので、ページ表示された瞬間にチェックされているものだけを配列にし、その後チェックされても変化しませんが、それは想定されているとおりの動作ですか?
6EVILSTAR9

2020/02/12 13:12 編集

ご指摘ありがとうございます。 このような意味があることを知りませんでした。functionごとに付けられた区別の名前だと思っていました。 ここを修正すれば取得できるのか分かりませんが、考えてみます。
Lhankor_Mhy

2020/02/13 00:29

> functionごとに付けられた区別の名前だと思っていました。 勘違いされているかもしれないと思ったので念のため書きますが、updateData という名前の問題ではないですよ。
6EVILSTAR9

2020/02/13 08:43

ご連絡ありがとうございます。いろいろ勘違いしていました。 希望通りの動作は実現できたのですが、5県以上を選択すると動作が重くなります。 根本的にこの仕組みでは都道府県の複数選択が実現できないことに気づきました。検索画面で「東京都」と「神奈川県」の2つを選択すれば、「東京都」・「神奈川県」・「東京都、神奈川県」という広告は表示されるようになりましたが、「東京都」のみを選択しても、「東京都、神奈川県」という広告は表示されません。自分で完全一致のせいだと言っていたのに恥ずかしい。 質問内容を「Osclassの部分一致」にするか、こちらの質問を閉じる対応を致します。

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.12%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Osclass

Osclassは、クラシファイド広告サイト(広告掲載用サイト)の構築に特化したCMSです。オープンソースで、PHP+MySQL構成で開発されています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。