簡體   English   中英

如何遍歷頁面上的所有單選或復選框輸入並返回返回的值的組合?

[英]How do I loop through all radio or checkbox inputs on a page and return what combination of values are returned?

我有一組4組無線電輸入。 我需要遍歷所有這些對象並返回用戶選擇的那些對象的組合,以便我可以根據組合是什么來執行操作。 現在,我只是使用大量的if語句,而且我知道自己做錯了。 我只想遍歷它們,如果組合x重新出現,那么我可以將顯示的圖像更改為特定圖像,或者如果組合y重新出現,則可以更改為其他圖像。 所以我想我應該做的是為每個可能的結果定義一個檢查過的無線電數組,然后在循環完成后檢查這些數組之一是否為真。 如果是,則顯示該組合的相應圖像。 這聽起來像是正確的方法嗎? 所以目前我有它遍歷並返回值。 當我檢查哥倫比亞廣播電台時,我期望array等於array1,它應該提醒我,但事實並非如此。

 <div class="controls">
                <div class="models">
                    <h4>Makes</h4>
                    <form>
                      <input id="coronado" type="radio" name="make" value="stock" checked> Coronado

                      <input id="columbia" type="radio" name="make" value="white"> Columbia
                    </form> 
                </div>
                <div class="models">
                    <h4>Models</h4>
                    <form>
                      <input id="day-cab" type="radio" name="model" value="day-cab" checked> Day Cab
                       <input id="mid-roof" type="radio" name="model" value="mid-roof"> Mid Roof

                      <input id="raised-roof" type="radio" name="model" value="raised-roof"> Raised Roof
                    </form> 
                </div>
                <div class="colors">
                    <h4>Colors</h4>
                    <form>
                      <input id="stock" type="radio" name="color" value="orange" checked> Stock

                      <input id="white" type="radio" name="color" value="white"> White
                    </form> 
                </div>
                <div class="accessories">
                    <h4>Accessories</h4>
                    <form>
                      <input id="stock-wheels" type="radio" name="accessories" value="stock-wheels" checked> Stock Wheels

                      <input id="with-spinners" type="radio" name="accessories" value="spinners"> Spinners
                    </form> 
                </div>

            </div>

var array = [];
var array1 = ["columbia","day-cab","orange","stock-wheels"];
$(':radio').change(function() {
    $(":radio:checked").each(function(i, e)  {
    array[i] = $(this).val();
    });
    if (array == array1) {
        alert(array);
    } 
});

數組實際上只是底層的對象,因此即使比較兩個空數組也將返回false。

var array1 = [];
var array2 = [];
array1 == array2 //evaluates to false

您要么想要使用另一個循環來迭代內容,然后將一個數組的每個內容與另一個數組進行比較(我相信這將是O(n ^ 2)時間)。 或者,您可以將數組的字符串化版本存儲在哈希表上,然后在固定時間內檢查哈希表。 另一個好處是您可以將圖像存儲在同一位置。 我相信它將把查詢變成一個恆定時間的操作O(1)。

var array = [1,2,3,4];
var hashTable = {};
hashTable[JSON.stringify(array)] = (Your image here);

要比較新數組,您只需像普通鍵值對查找一樣查找它即可。

var img = hashTable[array];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM