ドロップダウンの選択に基づいて<div>を表示または非表示にする

スコット・プセル

私がやろうとしているのは、選択したものに基づいて、スノーボードのレンタルオプションまたはスキーのレンタルオプションのいずれかをページに表示することです。発生するのは、選択が行われると、スキーオプションが選択されることだけです。

私が持っているコードは以下の通りです

スノーボードまたはスキーのオプションのみを許可する別の方法がある場合は、私に知らせてください。

function sksbcheck(nameSelect)
{
    admOptionValue = document.getElementById("sksb").value;
        if(admOptionValue = "ski"){document.getElementById("ski").style.display = ""; document.getElementById("snb").style.display = "none"; }
    else{
        if(admOptionValue = "snowboard"){document.getElementById("snb").style.display = ""; document.getElementById("ski").style.display = "none"; }
    else{    
        if(admOptionValue = "a"){document.getElementById("snb").style.display = "none"; document.getElementById("ski").style.display = "none"; }
    }}
}
<h5>Renter 1 Package</h5>
                            
                            <div style="margin-right:2%; height:100px; float:left;">
                            <label>Skier/Snowboard</label>        
                            <select name="feet" id="sksb" required="required" onchange="sksbcheck(this);" style="height:35px; padding:5px; float:left; margin-right:5px; width:100px;">
                                            <option value="a">...</option>
                                            <option value="ski">Skis</option>
                                            <option value="snowboard">Snowboard</option>
                                        </select>    
                            </div>
                            
                            <div id="ski" style="margin-left:2%; margin-right:2%; display:none; float:left;">
                            <label>Ski Options</label>        
                            <input type="checkbox" name="vehicle1" value="Skis"> Skis <br>
                            <input type="checkbox" name="vehicle2" value="Boots"> Boots <br>
                            <input type="checkbox" name="vehicle2" value="Poles"> Poles <br>
                            <input type="checkbox" name="vehicle2" value="Helmet"> Helmet <br>    
                            </div>
                            
                            <div id="snb" style="margin-left:2%; margin-right:2%; display:none; float:left;">
                            <label>Snowboard Options</label>        
                            <input type="checkbox" name="vehicle1" value="Snowboard"> Snowboard <br>
                            <input type="checkbox" name="vehicle2" value="Boots"> Boots <br>
                            <input type="checkbox" name="vehicle2" value="Helmet"> Helmet <br>    
                            </div>

Ason

外部CSSと、いくつかのCSSルールを組み合わせたより単純なスクリプトを使用して、この「アップグレード」を提案できますか。

外部CSSを再利用でき、マークアップが非常に読みやすくなるため、外部CSSを使用することは大きな利点です。

また、このスクリプトを使用すると、マークアップとCSSルールを追加するだけでオプションを追加できます。

document.querySelector('.choose-options').addEventListener('change', function(e) {
  e.target.parentElement.setAttribute('data-type', e.target.value);
});
.choose-wrap {
  margin-right:2%; height:100px; float:left;
}
.choose-options {
  height:35px; padding:5px; float:left; margin-right:5px; width:100px;
}
.ski-options, .snb-options {
  display: none;
  margin-left:2%;
  margin-right:2%;
  float:left;
}

div[data-type=ski] ~ .ski-options {
  display: block;
}
div[data-type=snowboard] ~ .snb-options {
  display: block;
}
<h5>Renter 1 Package</h5>

<div class="choose-wrap">
  <label>Skier/Snowboard</label>
  <select name="feet" required="required" class="choose-options">
    <option value="a">...</option>
    <option value="ski">Skis</option>
    <option value="snowboard">Snowboard</option>
  </select>
</div>

<div class="ski-options">
  <label>Ski Options</label>
  <input type="checkbox" name="vehicle1" value="Skis"> Skis <br>
  <input type="checkbox" name="vehicle2" value="Boots"> Boots <br>
  <input type="checkbox" name="vehicle2" value="Poles"> Poles <br>
  <input type="checkbox" name="vehicle2" value="Helmet"> Helmet <br>
</div>

<div class="snb-options">
  <label>Snowboard Options</label>
  <input type="checkbox" name="vehicle1" value="Snowboard"> Snowboard <br>
  <input type="checkbox" name="vehicle2" value="Boots"> Boots <br>
  <input type="checkbox" name="vehicle2" value="Helmet"> Helmet <br>
</div>


したがって、既存のコードと比較して、このコードで何が起こっているのかを手順として明確にするには、次のようにします。

  • 要素をdocument.querySelector()見つけて、次のように1つのインラインを使用する代わりにselectonchangeハンドラー(addEventListenerをアタッチします。onchange="sksbcheck();"

  • ハンドラーの関数パラメーターefunction(e))は、イベントオブジェクトを保持します。このオブジェクトは、誰かがアイテム(この場合は選択ボックス)を変更したときに関数自体に渡されます。

  • オブジェクト(targetプロパティは、クリックされた実際の要素への参照を保持します。evente.targetdocument.getElementById("sksb")

  • e.target.parentElement.setAttribute()その後、属性を追加しdata-type、選択ボックスの親に、wrapどのオプションに基づいてdiv要素は、すなわち、選択されましたdata-type="ski"

  • 次に、CSSルールが開始され、次のように表示されます。divにwrap値 "ski"(data-type="ski")の属性がある場合、ifステートメントのように、クラスski-optionsdiv[data-type=ski] ~ .ski-options {...}を使用してdivでブロックするように表示を設定します。
    if(admOptionValue = "ski"){document.getElementById("ski").style.display = ""; document.getElementById("snb").style.display = "none"; }


2つのselectグループを表示する更新

グループ選択要素をループして、それぞれにイベントハンドラーを追加する方法は次のとおりです。

Array.prototype.slice.call(document.querySelectorAll('.choose-options')).forEach(function(elem) {
  
  elem.addEventListener('change', function(e) {

    e.target.parentElement.setAttribute('data-type', e.target.value);

  });

});
.wrap {
  clear: both;
}
.choose-wrap {
  margin-right:2%; height:100px; float:left;
}
.choose-options {
  height:35px; padding:5px; float:left; margin-right:5px; width:100px;
}
.ski2-options, .snb2-options,
.ski-options, .snb-options {
  display: none;
  margin-left:2%;
  margin-right:2%;
  float:left;
}

div[data-type=snowboard2] ~ .snb2-options,
div[data-type=ski2] ~ .ski2-options,
div[data-type=snowboard] ~ .snb-options,
div[data-type=ski] ~ .ski-options {
  display: block;
}
<div class="wrap">
  <h5>Renter 1 Package</h5>

  <div class="choose-wrap">
    <label>Skier/Snowboard</label>
    <select name="feet" required="required" class="choose-options">
      <option value="a">...</option>
      <option value="ski">Skis</option>
      <option value="snowboard">Snowboard</option>
    </select>
  </div>

  <div class="ski-options">
    <label>Ski Options</label>
    <input type="checkbox" name="vehicle1" value="Skis"> Skis <br>
    <input type="checkbox" name="vehicle2" value="Boots"> Boots <br>
    <input type="checkbox" name="vehicle2" value="Poles"> Poles <br>
    <input type="checkbox" name="vehicle2" value="Helmet"> Helmet <br>
  </div>

  <div class="snb-options">
    <label>Snowboard Options</label>
    <input type="checkbox" name="vehicle1" value="Snowboard"> Snowboard <br>
    <input type="checkbox" name="vehicle2" value="Boots"> Boots <br>
    <input type="checkbox" name="vehicle2" value="Helmet"> Helmet <br>
  </div>
</div>

<div class="wrap">
  <h5>Renter 2 Package</h5>

  <div class="choose-wrap">
    <label>Skier/Snowboard</label>
    <select name="feet" required="required" class="choose-options">
      <option value="a">...</option>
      <option value="ski2">Skis 2</option>
      <option value="snowboard2">Snowboard 2</option>
    </select>
  </div>

  <div class="ski2-options">
    <label>Ski Options</label>
    <input type="checkbox" name="vehicle1" value="Skis"> Skis 2<br>
    <input type="checkbox" name="vehicle2" value="Boots"> Boots 2<br>
    <input type="checkbox" name="vehicle2" value="Poles"> Poles 2<br>
    <input type="checkbox" name="vehicle2" value="Helmet"> Helmet 2<br>
  </div>

  <div class="snb2-options">
    <label>Snowboard Options</label>
    <input type="checkbox" name="vehicle1" value="Snowboard"> Snowboard 2<br>
    <input type="checkbox" name="vehicle2" value="Boots"> Boots 2<br>
    <input type="checkbox" name="vehicle2" value="Helmet"> Helmet 2<br>
  </div>
</div>

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

ドロップダウンボックスの選択に基づいてdivを表示/非表示にする

分類Dev

ドロップダウンの選択に基づいてdiv要素を表示および非表示にする方法

分類Dev

ドロップダウン選択に基づいて複数のdivを表示/非表示Javascript

分類Dev

ドロップダウンの選択に基づいて複数のdivを表示する

分類Dev

選択したドロップダウンオプションに基づいてdivを再表示します

分類Dev

ラジオボタンの選択に基づいてドロップダウンを持つdivを非表示にするknockoutjs

分類Dev

ドロップダウンの選択に基づいて、divのコンテンツを変更する方法

分類Dev

ドロップダウンに基づいてdivを非表示にするjQuery

分類Dev

JQueryを使用して、ドロップダウン選択に基づいてdivを表示および非表示にします

分類Dev

ドロップダウンリストアイテムの選択に基づいてdivを追加します

分類Dev

検証が失敗したときにドロップダウン選択に基づいてdivを表示する方法

分類Dev

anglejsonchangeのドロップダウンの選択されたオプションの値に基づいてdivに動的IDを追加する方法

分類Dev

ドロップダウン選択のdivの可視性に基づいてテキストボックスを必須にする方法は?

分類Dev

オプションの選択に基づいてdivを非表示または表示

分類Dev

ドロップダウンの選択に基づいてjqueryの画像を動的に変更し、divに挿入します

分類Dev

jQueryまたはJSを使用して、異なるドロップダウン選択でdivを非表示にします

分類Dev

JavaScriptで表示される最初のオプションを使用して、ドロップダウンメニューからの選択に基づいてdivのコンテンツを変更します

分類Dev

ドロップダウン選択に基づいてdivをフィルタリングする - 簡単な方法はありますか?

分類Dev

Laravel 5表示方法、ドロップダウン選択によるdivの非表示

分類Dev

React js-divを表示または非表示にする

分類Dev

javascriptでdivを表示または非表示にする

分類Dev

子供のコンテンツに基づいて div を表示または非表示にする

分類Dev

角度6のラジオボタンの選択に基づいてdivを表示/非表示にする方法は?

分類Dev

Angular 2:ドロップダウン値に基づいてdivを表示

分類Dev

ドロップダウンの選択に基づいてフォーム要素を非表示/表示するCakePHP

分類Dev

ユーザーJqueryの選択に基づいてドロップダウンを非表示にする

分類Dev

jqueryを使用したラジオボタンの選択に基づいてdivを非表示にする

分類Dev

ドロップダウンでの選択に応じてdivのコンテンツを表示する

分類Dev

OSに基づいてDivを表示または非表示

Related 関連記事

  1. 1

    ドロップダウンボックスの選択に基づいてdivを表示/非表示にする

  2. 2

    ドロップダウンの選択に基づいてdiv要素を表示および非表示にする方法

  3. 3

    ドロップダウン選択に基づいて複数のdivを表示/非表示Javascript

  4. 4

    ドロップダウンの選択に基づいて複数のdivを表示する

  5. 5

    選択したドロップダウンオプションに基づいてdivを再表示します

  6. 6

    ラジオボタンの選択に基づいてドロップダウンを持つdivを非表示にするknockoutjs

  7. 7

    ドロップダウンの選択に基づいて、divのコンテンツを変更する方法

  8. 8

    ドロップダウンに基づいてdivを非表示にするjQuery

  9. 9

    JQueryを使用して、ドロップダウン選択に基づいてdivを表示および非表示にします

  10. 10

    ドロップダウンリストアイテムの選択に基づいてdivを追加します

  11. 11

    検証が失敗したときにドロップダウン選択に基づいてdivを表示する方法

  12. 12

    anglejsonchangeのドロップダウンの選択されたオプションの値に基づいてdivに動的IDを追加する方法

  13. 13

    ドロップダウン選択のdivの可視性に基づいてテキストボックスを必須にする方法は?

  14. 14

    オプションの選択に基づいてdivを非表示または表示

  15. 15

    ドロップダウンの選択に基づいてjqueryの画像を動的に変更し、divに挿入します

  16. 16

    jQueryまたはJSを使用して、異なるドロップダウン選択でdivを非表示にします

  17. 17

    JavaScriptで表示される最初のオプションを使用して、ドロップダウンメニューからの選択に基づいてdivのコンテンツを変更します

  18. 18

    ドロップダウン選択に基づいてdivをフィルタリングする - 簡単な方法はありますか?

  19. 19

    Laravel 5表示方法、ドロップダウン選択によるdivの非表示

  20. 20

    React js-divを表示または非表示にする

  21. 21

    javascriptでdivを表示または非表示にする

  22. 22

    子供のコンテンツに基づいて div を表示または非表示にする

  23. 23

    角度6のラジオボタンの選択に基づいてdivを表示/非表示にする方法は?

  24. 24

    Angular 2:ドロップダウン値に基づいてdivを表示

  25. 25

    ドロップダウンの選択に基づいてフォーム要素を非表示/表示するCakePHP

  26. 26

    ユーザーJqueryの選択に基づいてドロップダウンを非表示にする

  27. 27

    jqueryを使用したラジオボタンの選択に基づいてdivを非表示にする

  28. 28

    ドロップダウンでの選択に応じてdivのコンテンツを表示する

  29. 29

    OSに基づいてDivを表示または非表示

ホットタグ

アーカイブ