当我的代码在optgroup结束时到达时,它停止了...不读取最后一个选项元素......发生了什么?感谢
的console.log( '进入');
这是html 选择 - - 选项 optgroup --- 选项 选项 选项
var t,v = '';
el = $(selector).get(0);
if(el.hasChildNodes()){
var li = '<ul>' ;
for(var i = 0; i < el.childNodes.length; i++){
console.log('-----'+i+' '+el.childNodes[i].nodeName);
//console.log(el.childNodes[i].nodeName + ' -> '+ $(el.childNodes[i]).text());
if(el.childNodes[i].nodeName == 'OPTION'){
t = $(el.childNodes[i]).text();
v = $(el.childNodes[i]).val();
li = li + "<li value='"+v+"' >"+t+"</li>";
}else if(el.childNodes[i].nodeName == 'OPTGROUP'){
if(el.childNodes[i].hasChildNodes()){
var c = MacOsxSelectOptionToLi(el.childNodes[i]);
/*var c = '<ul>';
for(var j = 0; j < el.childNodes[i].childNodes.length; j++){
if(el.childNodes[i].childNodes[j].nodeName == 'OPTION'){
t = $(el.childNodes[i].childNodes[j]).text();
v = $(el.childNodes[i].childNodes[j]).val();
c = c + "<li value='"+v+"' >"+t+"</li>";
}
}
c = c+ '</ul>';
*/
}else{
var c = '';
}
var t = $(el.childNodes[i]).attr('label');
li = li + "<li class='optiongroup' >"+t+c+"</li>";
}
}
return li + '</ul>';
}
答案 0 :(得分:0)
请参阅,如果您已在函数MacOsxSelectOptionToLi()
中声明了整个代码并使用选择器来获取html select元素,则代码将进行无限递归。因此,从其他功能进行调用。 E.g。
function initFunction() {
var convertSelectToULCode = MacOsxSelectOptionToLi($(selector));
}