js获取checkbox,传到后台,每次都有一个undefined,如何在js里面去掉他

js代码:var ids = document.getElementsByName("ids").value;
form1.action ="UserLogs!addRole.action?ids="+ids;

第一:document.getElementsByName 返回的是一个数组,没有直接取值的,所以你错了!

第二:你可以使用typeof a == 'undefined' 或者 null == a来判断

第三:具体代码如下:

var arr_ids = document.getElementsByName("ids");
for(var i in arr_ids){
    if('undefined' != typeof document.getElementsByName("ids")[i]){
        // TODO
    }
    
    // 或者
    if(null != document.getElementsByName("ids")[i]){
        // TODO
    }
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-09-30

你的checkbox 是多选吗?如果是的话就获取选中的

function getSelected()
 {
  var flag = false;
  var inputs = document.getElementsByTagName('input');
  for(var i=0;i<inputs.length;i++){
    var obj = inputs[i];
    if(obj.type=='checkbox'){
     if(obj.checked==true){
      flag = true;
      alert(obj.value);
      }
    } 
  }
  if(!flag)//无选中项
  {
   alert("nothing");
   }
 }

追问

这样写貌似还是不可以啊

本回答被网友采纳
第2个回答  2013-09-30

你的循环貌似有问题,试试看,能不能解决你的问题

function aaa(){
   var checkObj = document.getElementsByName("ids");
   if(checkObj){
      var ids = new Array();
      var j = 0;
    for(var i = 0; i < checkObj.length; i++){
      if(checkObj[i].checked){
          ids[j] = checkObj[i].value;
          j++;
     }
     alert(ids);
    }
    return ids;
   }
   return "";
  }

第3个回答  2013-09-30
由于Name属性的不唯一性(ID唯一)导致getElementsByName返回的是一个数组
需要你传入该标签的下标,如果只有一个checkbox 用idx[0]试一下。。
相似回答