本机Javascript选择

本机Javascript选择,javascript,Javascript,我需要使用本机Javascript,对于其中的一些,我需要选择多个属性(例如带有类和id的div)。这是我到目前为止得到的一个代码示例。该示例包含所有单个选项 var $ = function (selector) { var elements = []; var doc = document, i = doc.getElementsByTagName("div"), iTwo = doc.getElementById("some_id"), // #some_id i

我需要使用本机Javascript,对于其中的一些,我需要选择多个属性(例如带有类和id的div)。这是我到目前为止得到的一个代码示例。该示例包含所有单个选项

    var $ = function (selector) {
var elements = [];

var doc = document, i = doc.getElementsByTagName("div"),
    iTwo = doc.getElementById("some_id"), // #some_id
    iThree = doc.getElementsByTagName("input"),
    // ^ Lets say I wanted to select an input with ID name as well. Should it not be doc.getElementsByTagName("input").getElementById("idname")
    iFour = doc.getElementsByClassName("some_class"); // some_class

elements.push(i,iTwo,iThree,iFour);

return elements;
    };

哦,是的,我忘了提到我根本不能使用querySelector…

这取决于您要选择的属性。例如,您可以传递一个对象,如:

{tagname: 'div', class: 'foo'};
函数可能类似于:

function listToArray(x) {
  for (var result=[], i=0, iLen=x.length; i<iLen; i++) {
      result[i] = x[i];
  }
  return result;
}

function getByProperties(props) {
  var el, elements;
  var baseProps = {id:'id', tagName:'tagName'};
  var result = [];

  if ('tagName' in props) {
    elements = listToArray(document.getElementsByTagName(props.tagName));

  } else if ('id' in props) {
    elements = [document.getElementById(props.id)];
  }

  for (var j=0, jLen=elements.length; j<jLen; j++) {
    el = elements[j];
    for (var prop in props) {

      // Include all with tagName as used above. Avoids case sensitivity
      if (prop == 'tagName' || (props.hasOwnProperty(prop) && props[prop] == el[prop])) {
        result.push(el);
      }
    }
  }
  return result;
}

// e.g.
getByProperties({tagName:'div', className:'foo'});
函数列表阵列(x){

对于(var result=[],i=0,iLen=x.length;i
querySelector
/
querySelector all
^^^您可以使用它,它允许您使用css选择器。但是请注意底部的浏览器兼容性。^^^基本上在IE中不起作用<8哦,是的,我忘了提到我根本不能使用querySelector。。。