Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/445.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript在执行数组';推动';_Javascript_Jquery - Fatal编程技术网

Javascript在执行数组';推动';

Javascript在执行数组';推动';,javascript,jquery,Javascript,Jquery,我有3组单选按钮,每组包含多个按钮。使用bootstrap3中的data toggle=“buttons”时,我可以确保每组只选择一个答案。到目前为止一切正常。单击事件会触发下面的函数,并返回所选项目的值。我的问题是如何处理数组values中存储的返回值,并为每个键指定一个与按钮组相对应的名称 假设我选择了Red+small+Circle,那么getValues将返回键=>值: [0]=>红色 [1] =>小型 [2] =>圆圈 现在,如果我选择small+Circle: [0]=>小型

我有3组单选按钮,每组包含多个按钮。使用bootstrap3中的
data toggle=“buttons”
时,我可以确保每组只选择一个答案。到目前为止一切正常。单击事件会触发下面的函数,并返回所选项目的值。我的问题是如何处理数组
values
中存储的返回值,并为每个键指定一个与按钮组相对应的名称 假设我选择了
Red+small+Circle
,那么
getValues
将返回键=>值:

  • [0]=>红色
  • [1] =>小型
  • [2] =>圆圈
现在,如果我选择
small+Circle

  • [0]=>小型
  • [1] =>圆圈
这些值是按照选择的顺序存储的,我正在尝试获取这些值以根据选择生成查询

我希望以以下格式存储值的位置:

  • [颜色]=>x
  • [大小]=>y
  • [形状]=>z
d

Red///Grp 1颜色
蓝色

小///Grp2大小 大的
圆形///Grp3形状 广场 函数getValues(){ var值=[]; 对于(var x=0;x

谢谢

请使用以下代码:

    function getValues(){

    var values = [];
    for(var x = 0; x < radios.length; x++){
        if(radios[x].type == "radio" && radios[x].checked){
            var tmp={};
            tmp[radios[x].name]=radios[x].value;  
           values.push(tmp);
        }
    }
    return values;

    }

    $( "#Btn" ).click(function() {
          var x = getValues();

    $.each(x, function(k, v) {

    //display the key and value pair
          alert(k + ' is ' + v);

    });
函数getValues(){
var值=[];
对于(var x=0;x
下面的示例代码将“全部选中”复选框设置为数组

// A function that return an array with the selected items
function getSelected() {

  var selected = [];

  var checkboxes = $('input[type=checkbox]:checked');

  for(var i = 0; i < checkboxes.length; i++){
     if(checkboxes[i].checked){
        selected.push(checkboxes[i].value);
     }
  }

  return selected;

}
//返回包含选定项的数组的函数
函数getSelected(){
所选var=[];
var复选框=$('input[type=checkbox]:checked');
对于(变量i=0;i

请注意,这适用于jQuery。

如前所述,数组在JS中的处理方式有所不同。您真正想要的是一个哈希表……JS只是一个对象(某种程度上)

可以使用的一种技术是创建一个类似数组的对象,该对象的名称既是键又是索引

需要注意的是,这不是一个功能齐全的数组,因为它没有实现推送、弹出、切片等功能

var values = {},
    length = 0;

for(var x = 0; x < radios.length; x++){
    if(radios[x].type == "radio" && radios[x].checked){
        //Assign the name as a key on the object
        values[radios[x].name] = radios[x].value;

        //Also assign the index as a key
        values[x] = radios[x].value;

        length += 1;
    }
}

values.length = length;

return values;
它还允许您通过索引访问它们:

values[0];
更好的是,您可以使用普通for循环对其进行迭代:

for(var i = 0; i < values.length; i++){
   //I act just like an array!!
   values[i];
}
for(变量i=0;i
您的代码可能与以下内容类似:

<script>
function getValues() {
  var values={};
  var inputs = document.getElementsByTagName("input");
  console.log(inputs);
  for (var i=0;i<inputs.length;++i) 
     if (inputs[i].type==="radio" && inputs[i].checked) 
        values[inputs[i].name]=inputs[i].value;
 console.log(values);
}
</script>
<button onclick="getValues()">Hit me</button>
试试这个

我认为关联数组在Javascript中是可能的

红色
蓝色

小的 大的
圆圈 广场 函数getValues(){ var值=[]; var radios=document.getElementsByClassName(“radiotrp”); 控制台日志(无线电); 对于(var x=0;x

您不能使用$。每个关联数组都有详细信息

数组没有索引名您想要一个对象这可能会对您有所帮助Javascript中没有关联数组您可以将值属性指定为
color:red
size:small
等,而不仅仅是
red
small
等,然后是spli谢谢,我不知道javascript中没有关联数组…@Chavan-谢谢有用的链接谢谢alot Josh。只是将索引分配为键的部分不应该是值[x]=radios[x].name;取而代之?@user3003977-我想这取决于你是想要其中的名称还是值。
for(var i = 0; i < values.length; i++){
   //I act just like an array!!
   values[i];
}
<script>
function getValues() {
  var values={};
  var inputs = document.getElementsByTagName("input");
  console.log(inputs);
  for (var i=0;i<inputs.length;++i) 
     if (inputs[i].type==="radio" && inputs[i].checked) 
        values[inputs[i].name]=inputs[i].value;
 console.log(values);
}
</script>
<button onclick="getValues()">Hit me</button>
[ values.color||"default", values.size||"default", values.shape||"default" ]
<input type="radio" name="color" class="radioGrp" value="red"/> Red  
<input type="radio" name="color" class="radioGrp" value="blue"/> Blue
<br/>
<input type="radio" name="size" class="radioGrp" value="small"/> small
<input type="radio" name="size" class="radioGrp" value ="Large"/> Large
<br/>
<input type="radio" name="shape" class="radioGrp" value="circle"/>circle
<input type="radio" name="shape" class="radioGrp" value="square"/>square

<input type='button' id="Btn" />


function getValues(){

var values = [];
var radios = document.getElementsByClassName("radioGrp");
    console.log(radios);

for(var x = 0; x < radios.length; x++){
    if(radios[x].type == "radio" && radios[x].checked){
       values[radios[x].name] = (radios[x].value);
    }
}
  return values;
}

$("#Btn").click(function() {
      var x = getValues();

     alert(x["color"]);
     alert(x["size"]);
     alert(x["shape"]);

     for(var prop in x ){
       alert( prop + " is " + x[prop] );
     }

});