表单中有个
<input type="text" name="username" id="username" value="1" />用document.getElementById("username").value可以获得1但如果用下面的方法就获取不到任何值,只能返回undefinedfunction $() {
  var elements = new Array();
  for (var i = 0; i < arguments.length; i++) {
    var element = arguments[i];
    if (typeof element == 'string') element = document.getElementById(element);
    if (arguments.length == 1) return element;
    elements.push(element);
  }
  return elements;
}
var obj = new Array(['username'], ['password'], ['question'], ['answer'], ['email'], ['captcha']);
for(var i=0; i<obj.length; i++) {
alert($(obj[i]).value);
}

解决方案 »

  1.   

    function $() {
      var elements = new Array();
      for (var i = 0; i < arguments.length; i++) {
        var element = arguments[i];
        if (typeof element == 'string') element = document.getElementById(element);
        if (arguments.length == 1) return element;
        elements.push(element);
      }
      return elements;
    }这个$("username")返回的是一个数组$("username")[0]用索引0来访问就可以了
      

  2.   

    或者你改成下面的,当多个元素时才返回数组var $=function() {
    if(arguments.length>1) {
                for(var i=0,els=[];i<arguments.length;i++)
                    els[i]=arguments.callee(arguments[i]);
                return els;
            }
        if(!el) {
        return null;
        } else if(typeof el =='string') {
            return document.getElementById(el);
        } else {
            return el;
        }
    }
      

  3.   

    看错了,你的参数有问题
    var obj = new Array(['username'], ['password'], ['question'], ['answer'], ['email'], ['captcha']);
    这个是要传给$的
    其参数是id而不是数组,
    所以改成
    var obj = new Array('username', 'password', 'question', 'answer', 'email', 'captcha');
      

  4.   

    var obj = new Arra('username', 'password', 'question', 'answer', 'email', 'captcha');
    username 应该是id吧,obj的元素是加[]应该是数组,typeof是boject,$(["username"])返回了自身
    ["username"],是一个数组