1

私はこの問題に数か月間、断続的に取り組んできました。以下のこの配列構造に 「OR」演算子を適用する方法はありますか?

基本: ドロップダウンの値が配列の値と一致する場合、対応する ID が関数に送信され、他の処理が行われますが、 OR 演算子を追加/含めることができませんでした。

たとえば、コードで次のように言いたいです。

{id : '418', value: 'Brochure' || 'Broc'},
{id : '546', value: 'Classified Ad' || 'CA' || 'Class Ad'},

しかし、上記は決して機能しないので、それができないだけなのか、それとも構文が間違っているのかわかりません。

どんな洞察も大歓迎です。


値が見つかると実行される関数

var projectTypes = [{
    "id": "418",
    "value": ["Brochure", "Broc"]
  }, {
    "id": "546",
    "value": ["Classified Ad", "CA", "Class Ad"]
  }, {
    "id": "254",
    "value": ["Flyer", "Flyers"]
  }, {
    "id": "855",
    "value": "Post Card"
  }];

function projectTypeChange() {
    var project_type = document.getElementById(projectType_Field_Id).value;
    SwitchBox(project_type);
}

function SwitchBox(selectedType) {
    for (var i = 0; i < projectTypes.length; i++) {
        if (projectTypes[i].value.indexOf(projectTypes) >= 0)
        //if (projectTypes[i].value == selectedType)
        {
            document.getElementById("section-" + projectTypes[i].id).style.display = '';
        } else {
            document.getElementById("section-" + projectTypes[i].id).style.display = 'none';
        }
    }
}
4

2 に答える 2

4

|| を使おうとする代わりに 演算子 (この場合は正しくありません) を使用して、値を独自の配列にします。

{ id: '418', value: ['Brochure','Broc'] },
{ id: '546', value: ['Classified Ad','CA','Class Ad'] }

次に、値と等しいかどうかをチェックする代わりに、indexOf をチェックして、値が配列内にあるかどうかを確認します。

if(value.indexOf(someVal) >= 0)
{
    // someVal was found in the value array...do the work!
}
于 2012-07-25T13:59:04.600 に答える
1

ジャスティンが提案したことをしなさい。indexofコードの次の行を変更します。

if(projectTypes[i].value.indexOf(projectTypes) >= 0)

これに:

if(projectTypes[i].value.indexOf(selectedType) >= 0)
于 2012-07-26T00:41:50.263 に答える