2017-11-22 19 views
1

新しいdivのドロップダウンリストから、選択したすべてのオプションのHTMLを出力しようとしています。しかし、新しいチェックボックスを選択するたびに、コンテナは選択された値で更新されますが、以前に選択したすべての値がドロップダウンリストに追加されます。そんなことをやっていくなど。 HTMLのチェックボックスを1回だけ出力するにはどうすればよいですか?すべての配列項目を一度だけ追加する

HERESに私のJSコード:

let emptyArr = []; 
$('.dropdown-select-container').find("option:selected").each(function(){ 
    emptyArr.push($(this).html()); 
}); 

for (i in emptyArr) { 
    let outputResult = "<div class='arr-item'>" + emptyArr[i] + "</div>" 
    $("#container").append(outputResult); 
} 
+1

私は理解していません。なぜあなたは 'select'を持たない' option'を持っていて、その中に '// Checkboxesのリスト 'を持っていますか? 'option'にチェックボックスがあるのはなぜですか? –

+0

私はお詫びしますが、HTML部分はスキップしました。私はjqueryにもっと焦点を当てたいと思っていました。 – IsaaK08

+1

^無効なHTMLマークアップがあるとjQueryが期待どおりに動作しません。 –

答えて

1

あなたはjQueryのappendを使用しているので、あなたの#containerは常に#containerの内容を置き換えるとは対照的に、outputResultの内容を(別名追加)を追加します。代わりに、あなたは#containerの内容を空にし、そのようなoutputResultで内容を置き換えるためにhtml機能を使用する必要があります。

$("#container").html(outputResult); 
+2

お父さんそれ、私はそこに着いていた。 Heh。正直言って、@クリスチャンサン。 – Snowmonkey

1

考えると、不完全なデータを、私たちは私たちがすることができません。将来的には、完全な情報で何をしようとしているのかを診断する方が簡単です。

しかし、これはすべて過労です。あなたのポストを読んで、あなたはなぜあなたがaab、次にaababcを得ているのか、より多くの小切手などを追加するときに尋ねました。単純な答えは、あなたがdivにもっと多くのものを追加しているからです。しかし、あなたはすでにそこにあるものを削除することはありません。追加を開始する前に、そのコンテナdivで単にempty()を呼び出します。私が何を意味するかを見るには以下を参照してください。

$(".dropdown-select-container").on("change", function() { 
 

 
    var emptyArr = []; 
 
    // Go through the select, find all selected options. 
 
    $('.dropdown-select-container').find(":selected").each(function() { 
 
    emptyArr.push($(this).html()); 
 
    }); 
 
    // remove all current content. 
 
    $("#container").empty(); 
 
    
 
    // go through the array line by line, 
 
    // and create a div for each. 
 
    for (var i = 0; i < emptyArr.length; i++) { 
 
    console.log(emptyArr); 
 
    var outputResult = "<div class='arr-item'>" + emptyArr[i] + "</div>" 
 
    $("#container").append(outputResult); 
 
    } 
 

 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="container"> 
 

 
</div> 
 

 
<label>Selection list</label> 
 

 
<select class="dropdown-select-container" multiple> 
 
    <option value="AL">Alabama</option> 
 
    <option value="AK">Alaska</option> 
 
    <option value="AZ">Arizona</option> 
 
    <option value="AR">Arkansas</option> 
 
    <option value="CA">California</option> 
 
    <option value="CO">Colorado</option> 
 
    <option value="CT">Connecticut</option> 
 
    <option value="DE">Delaware</option> 
 
    <option value="DC">District Of Columbia</option> 
 
    <option value="FL">Florida</option> 
 
    <option value="GA">Georgia</option> 
 
    <option value="HI">Hawaii</option> 
 
    <option value="ID">Idaho</option> 
 
    <option value="IL">Illinois</option> 
 
    <option value="IN">Indiana</option> 
 
    <option value="IA">Iowa</option> 
 
    <option value="KS">Kansas</option> 
 
    <option value="KY">Kentucky</option> 
 
    <option value="LA">Louisiana</option> 
 
    <option value="ME">Maine</option> 
 
    <option value="MD">Maryland</option> 
 
    <option value="MA">Massachusetts</option> 
 
    <option value="MI">Michigan</option> 
 
    <option value="MN">Minnesota</option> 
 
    <option value="MS">Mississippi</option> 
 
    <option value="MO">Missouri</option> 
 
    <option value="MT">Montana</option> 
 
    <option value="NE">Nebraska</option> 
 
    <option value="NV">Nevada</option> 
 
    <option value="NH">New Hampshire</option> 
 
    <option value="NJ">New Jersey</option> 
 
    <option value="NM">New Mexico</option> 
 
    <option value="NY">New York</option> 
 
    <option value="NC">North Carolina</option> 
 
    <option value="ND">North Dakota</option> 
 
    <option value="OH">Ohio</option> 
 
    <option value="OK">Oklahoma</option> 
 
    <option value="OR">Oregon</option> 
 
    <option value="PA">Pennsylvania</option> 
 
    <option value="RI">Rhode Island</option> 
 
    <option value="SC">South Carolina</option> 
 
    <option value="SD">South Dakota</option> 
 
    <option value="TN">Tennessee</option> 
 
    <option value="TX">Texas</option> 
 
    <option value="UT">Utah</option> 
 
    <option value="VT">Vermont</option> 
 
    <option value="VA">Virginia</option> 
 
    <option value="WA">Washington</option> 
 
    <option value="WV">West Virginia</option> 
 
    <option value="WI">Wisconsin</option> 
 
    <option value="WY">Wyoming</option> 
 
</select>