初学递归..我想实现最简单的jq后代选择器,为什么总是报错递归溢出啊
我想通过$(ul li a)这样的形式实现获取到所有ul,li下面的标签,不考虑其他问题
* {padding: 0;margin:0; } ul {background-color: #999; } li {list-style-type: none; }
function $( para ) {
//selecterBox 用来存储输入的各个选择器,每一个数组元素都是一个选择器
var selecterBox = para.split(' ');
var j = 0;
var i = 1;
var getTag = function (j) {
if ( selecterBox.length == 1 ) {
return document.getElementsByTagName( selecterBox[j] );
} else {
j++;
if( j==0 ){
return document.getElementsByTagName( selecterBox[j] );
}else if ( j>0 && j<=selecterBox.length ) {
return getTag(j-1)[0].getElementsByTagName( selecterBox[j] );
} else {
return getTag(j)[0].getElementsByTagName( selecterBox[selecterBox.length-1] );
}
}
}
return getTag(j);
}
//测试
$("ul li")[0].style.backgroundColor = "#f00";
错误信息:Uncaught RangeError: Maximum call stack size exceeded