Una función que obtiene el enésimo nodo del elemento ahora solo puede obtener elementos a través de la etiqueta HTML, y su función no es perfecta.
Demo: HTML
<ul id = "list"> <li> 1 <boton> a </boton> </li> <li> 2 <botton> b </boton> <boton> o </boton> </li> <p> test </p> <li> 3 <boton> c </boton> </li> <li> 4 <botte> d </boton> </li> <li> 5 <boton> e </boton> </li> </ul>
JS:
/**** @param nodo principal parent*@param ele elemento etiqueta para seleccionar*@param num ¿Qué elemento es el primer*@return {*}*/function nth (parent, ele, num) {var _ele = array.prototype.slice.call (parent.childnodes), elearray = []; // convertir la noda infantil de la nodo parent en el nodo parent en el nodo de la matriz; eleLeLe; eleAry; eleAry; eleAry; Solo almacena nodos de elemento para (var i = 0, len = _ele.length; i <len; i ++) {if (_ele [i] .nodeType == 1) {elearray.push (_ele [i]); // Filtrar nodos sin elementos}} Si (argumentos.length === 2) {// solo 2 parámetros son 2 parámetros son los parámetros, se pasan el segundo. El número de elementos en el nodo principal .///I El segundo parámetro es una cadena, seleccione el nodo representado por todos los parámetros en el nodo principal if (typeof argumentos [1] === "" cadena ") {_ ele = array.prototype.slice.call (parent.getElementsByTagName (argumentos [1])); return _ele;} else if (typeof arguments [1] === "número") {return elearray [argumentos [1];}} else {// si los parámetros están completos, return a node, y el índice comienza desde 0_ele = array.prototype.slice.call (parent list = document.getElementById ("list"); console.log (nth (lista, "li", 2) .innerhtml); // Seleccione el tercer elemento li console.log (nth (list, "botón", 3) .innerhtml) // Seleccione el cuarto botón console.log (nth (nth (list, "li", 1), "botón", 1) .innerhtml); // Seleccione el segundo botón console.log (nth (nth (list, "li", 1), "botón")); // seleccione todo el botón console.log (nth (lista, 2)); // Seleccione el segundo elemento