"push"不是[getElementsByTagName返回的元素]的函数

Jef*_*ins 2 html javascript arrays dom

我有一些Javascript,我正在使用XMLHttpRequest发布我的表单,否则工作正常,但当我尝试将SELECT值添加到INPUT值的数组时,似乎Javascript已经失去了它的思想(或者我有) .

此函数只构建"name1 = value1&name2 = value2"字符串并将其传递.

代码:

function sendTheForm() {
  var postData = '';
  var inputArr = document.getElementsByTagName('input');
  if (inputArr.hasOwnProperty(length)) alert("ARRAY!!");
  var selects = document.getElementsByTagName('select');
  var tmpObj = new Object();

  for (var i = 0; i < selects.length; i++) {
    tmpObj.name  = selects[i].name;
    tmpObj.value = selects[i].value;
    inputArr.push(tmpObj);
    }

  for (var i = 0; i < inputArr.length; i++) {
    if (inputArr[i].value) {
      if (postData.length) postData += '&';
      postData += inputArr[i].name;
      postData += '=';
      postData += escape(inputArr[i].value);
      }
    }

  makeHttpReq(postData)
  }
Run Code Online (Sandbox Code Playgroud)

我在FireFox中遇到的错误是:" inputArr.push is not a function"它确实说它是一个数组.

现在,除了它是一种方法(不是一种功能)之外,这里似乎出现了严重的错误,它在我的鼻子底下,我看不到它.救命?

早些时候,我尝试过:

  len = inputArr.length;
  inputArr[len].name = ...
Run Code Online (Sandbox Code Playgroud)

并且还得到inputArr [31]未定义的错误.这可能是显而易见的,但我没有看到它.救命?

Phr*_*ogz 6

拥有一个.length属性并不意味着它是一个数组.getElementsByTagName()返回DOM 2 NodeList,而不是Array.