HTML如何在单选按钮上传递两个变量?

时间:2014-09-02 17:52:12

标签: javascript html5 dom onclick parameter-passing

如何在按下按钮时传递两个变量?这可能看起来很基本,但我完全卡住了!

我正在创建一个左侧有一个单选按钮的表,当你按下它时我想要检索两个值。我目前正在检索一个值,但我想念另一个。

目前我将一个值传递给我的onRadioButtonPress函数,如下所示:

 html += "<tr><td><center><br>
          <input type='radio' 
             onclick='onRadioButtonPress(this.value)' 
             name='siteChosen' 
             value='"+siteIDArray[i]+"'>
           <center></td>";

我正在调用这样的函数:

//function for on radio button press
   function onRadioButtonPress(val){

      //blah blah blah
 }

哪种方法效果很好,但如何添加

的第二个值
  

usagePlanArray [I]

我的onClick函数?我该如何改变输入?

提前谢谢!!! :)如果您有任何问题,或者我错过了可以帮助您的事情,请告诉我!


解决!

请参阅@mplungjan的标记答案。我使用了他对jQuerys有用的替代方法。

3 个答案:

答案 0 :(得分:3)

value='"+siteIDArray[i]+"|"+usagePlanArray[i]+"'>

但您还需要从HTML中删除换行符

然后在函数中你可以使用

var vals=val.split("|");
var siteID=vals[0], usagePlan=vars[1];

替代方案 - 在jQUery中特别有用:

html += "<tr><td><center><br><input type='radio'"+
        " onclick='onRadioButtonPress(this)' name='siteChosen'"+
        " data-siteid='"+siteIDArray[i]+"'"+
        " data-usageplan='"+usagePlanArray[i]+"'><center></td>";

function onRadioButtonPress(rad) {
  var siteID=rad.getAttribute("data-siteid"),
      usageplan=rad.getAttribute("data-usageplan"),
}

答案 1 :(得分:0)

在JSON中传递数组:

   value='"+JSON.stringify(siteIDArray)+"'>

这会将整个数组作为JSON数组字符串传递。

传递给单个值:

    value='["+siteIDArray[i] + "," + usagePlanArray[i] + "]'>

或作为对象:

    value='{ \"val1\":\""+siteIDArray[i] + "\",\"val2\":\"" + usagePlanArray[i] + "\"]'>

现在在函数中解码

   values = JSON.parse(val);
   ...
   xyz = values[0];  // for the array
   ...
   xyz = values.val1; // for the object

代码甚至可以优化,如果您直接将其传递给onclick而不是value参数,但这可能有一些额外的用途。

答案 2 :(得分:0)

如果对两个数组使用相同的索引,为什么不将索引存储为值并在单击回调中查找所需的值?

var html= "";

var siteIDArray = [1, 5, 2, 33];
var usagePlanArray = ["unlimited", "20gb", "10gb", "5gb" ]

function arrayCombo(index){
    return {siteId: siteIDArray[index], usagePlan: usagePlanArray[index]};   
}

for(var i=0; i<siteIDArray.length; i++){
    html += "<tr><td><center><br><input type='radio' name='siteChosen' value="+i+"><center></td>";
}

$('#content').html(html);

$('input').on('click', function(event){
    //Do whatever you want with the values you are looking for here
    var x = arrayCombo(this.value);
    alert(x.siteId+", "+x.usagePlan);
});

另外,为了演示数组之间这种紧密结合的关系,最好将它们的值存储在共享索引中作为数组中对象的属性。