如何循环浏览页面上的所有单选或复选框输入,并返回返回的值组合

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

本文关键字:返回 输入 复选框 单选 组合 何循环 循环 浏览      更新时间:2023-09-26

我有一组4组无线电输入。我需要循环浏览所有这些语句,并返回用户选择的语句的组合,这样我就可以根据组合执行操作。现在我只使用了大量if语句,我知道我做错了。我想循环浏览它们,如果组合x回来,我可以将显示的图像更改为某个图像,或者如果组合y回来,我也可以更改为不同的图像。因此,我认为我应该为每个可能的结果定义一个已检查的无线电数组,然后在循环完成后检查其中一个数组是否为真。如果是,则显示该组合的相应图像。这听起来是正确的方法吗?所以目前我让它循环通过并返回值。当我检查无线电哥伦比亚号时,我希望数组等于数组1,它应该提醒我,但事实并非如此。

 <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];