【问题标题】:Radio Button Javascript Array单选按钮 Javascript 数组
【发布时间】:2012-09-09 12:03:31
【问题描述】:

我有一个像下面这样的单选按钮

Apple
<input type="radio" id="one" name="apple" data-price="10" value="light"/> Light
<input type="radio" id="two" name="apple" data-price="20" value="dark" /> Dark
<input type="text" id="appleqty" name="appleqty" value="" />

Mango
<input type="radio" id="three" name="Mango" data-price="30" value="light"/> Light
<input type="radio" id="one" name="Mango" data-price="40" value="dark" /> Dark
<input type="text" id="Mangoqty" name="Mangoqty" value="" />

Pine Apple
<input type="radio" id="four" name="Pineapple" data-price="50" value="light"/> Light
<input type="radio" id="five" name="Pineapple" data-price="60" value="dark" /> Dark
<input type="text" id="Pineappleqty" name="Pineappleqty" value="" />

Grape
<input type="radio" id="six" name="Grape" data-price="70" value="light"/> Light
<input type="radio" id="seven" name="Grape" data-price="80" value="dark" /> Dark
<input type="text" id="Pineappleqty" name="Pineappleqty" value="" />

我需要创建一个如下所示的数组

   array
      0 => 
        array
          'apple' => string 'light' (length=10)
          'price' => string '50' (length=1)
      1 => 
        array
          'Pineapple' => string 'dark' (length=10)
          'price' => string '60' (length=1)

温馨提示the array key should be the radio button name, the price should be taken from data-price in radio button 我需要序列化这个数组 这应该使用 javascript 来完成。

【问题讨论】:

  • 请出示您目前掌握的代码,并说明您在哪里卡住了。

标签: javascript


【解决方案1】:

您需要迭代&lt;input&gt;s。为此:

  1. 如果您事先知道要查找的元素 names(即 appleMango 等),则可以对每个名称执行 document.getElementsByNameIn JavaScript, how can I get all radio buttons in the page with a given name? 中解释。

  2. 如果您不知道它们(它们是动态的),只需将它们包装在具有给定 ID 的 &lt;div&gt; 中并迭代其子级,如 how to loop through some specific child nodes 中一样。

在迭代给定name 的无线电时,检查每个无线电的checked 属性以了解选择了哪些无线电,如How can i check if a radio button is selected in javascript?

您需要构建一个关联数组,其中包含以下键值对,如Dynamically creating keys in javascript associative array

  1. &lt;input&gt;namevalue 属性。
  2. 文字pricedata-price 属性。您需要使用getAttribute('data-price') 来获取data-price 属性的值。

例子:

function createArray() {

    var myArr = new Array();
    myArr[0] = createSubArray('apple');
    myArr[1] = createSubArray('Mango');
    myArr[2] = createSubArray('Pineapple');
    myArr[3] = createSubArray('Grape');
    return myArr;
}


function createSubArray(name) {
    var arr = new Array();
    elems = document.getElementsByName(name);
    for (var i = 0; i < elems.length; i++) {
        if (elems[i].checked) {
            arr[name] = elems[i].value;
            arr['price'] = elems[i].getAttribute('data-price');
        }
    }
    return arr;
}​

您可以在JSFiddle 中看到此示例。

【讨论】:

  • 答案链接到的同一个站点的问题中有很多代码示例。
  • 我为你准备了fiddle。您对代码有什么不明白的地方?
  • 你在函数return之后执行alert
  • 数组中没有存储值
  • 您是否尝试过alerting 您正在寻找的值?检查此jsfiddle.net/sC2LC/3。或者这个jsfiddle.net/sC2LC/4
猜你喜欢
  • 1970-01-01
  • 2011-06-26
  • 2013-01-08
  • 2017-09-18
  • 2012-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-09
相关资源
最近更新 更多