Javascript:在函数中调用函数并覆盖变量
我有一个JavaScript数组,它可以达到我想要的深度:Javascript:在函数中调用函数并覆盖变量,javascript,Javascript,我有一个JavaScript数组,它可以达到我想要的深度: var steps = [ { "step_id" : "1", "step_name" : "Step 1", "children" : [ { "step_id" : "4", "step_name" : "Step 4", "children" : [ { "step_id" : "6", "step_
var steps = [
{ "step_id" : "1", "step_name" : "Step 1", "children" :
[
{ "step_id" : "4", "step_name" : "Step 4", "children" :
[
{ "step_id" : "6", "step_name" : "Step 6" }
]
},
{ "step_id" : "5", "step_name" : "Step 5" }
]
},
{ "step_id" : "2", "step_name" : "Step 2" },
{ "step_id" : "3", "step_name" : "Step 3" }
];
然后,我想在选择下拉框中显示每个步骤。对于每个子步骤,我都要缩进它。这是我的JS
function stepsChildren(children, count) {
var new_count = count + 1;
var selection_values_children = '';
for(j=0;j<children.length;j++) {
selection_values_children += '<option value="' + children[j].step_id + '">';
for(x=1;x<=count;x++) {
selection_values_children +=' ';
}
selection_values_children += children[j].step_name + '</option>';
if (typeof(children[j].children) != 'undefined')
selection_values_children += stepsChildren(children[j].children, new_count);
}
return selection_values_children;
}
var selection_values = '';
for(i=0;i<steps.length;i++) {
selection_values += '<option value="' + steps[i].step_id + '">' + steps[i].step_name + '</option>';
if (typeof(steps[i].children) != 'undefined')
selection_values += stepsChildren(steps[i].children, 1);
}
document.write('<select>' + selection_values + '</select>');
函数步骤schildren(子项,计数){
var new_count=count+1;
变量选择值\子项=“”;
for(j=0;j如果您不使用var
关键字创建变量,它将是全局变量,您将获得您描述的行为。在javascript中,我总是使用for
循环,如for(var I=0;iYou sir是一个传奇!感谢Adam:)I(通常)以相同的方式声明我的循环索引,但请记住JavaScript没有块作用域,因此(在您的示例中)i
将被包含for
循环的函数的其余部分访问,而不仅仅是在循环内。