Javascript 覆盖数组中的值

Javascript 覆盖数组中的值,javascript,json,multidimensional-array,Javascript,Json,Multidimensional Array,正在尝试使用这个JSON/HTML生成器,一旦用户将所有相应的数据输入到输入字段中,该生成器将为用户显示JSON数据和关联的HTML元素。我知道问题是什么,但我不知道如何解决它。当我试图生成JSON时,来自第一组level\u 2\u objName 存储,然后移动到下一组级别2\u对象名,因为该特定输入的ID名称重置为级别2\u对象名+j。您可以在这里看到控制台输出=>有什么想法吗?我知道修复需要发生在for循环的内部parseData() var categoryAmount=docume

正在尝试使用这个JSON/HTML生成器,一旦用户将所有相应的数据输入到输入字段中,该生成器将为用户显示JSON数据和关联的HTML元素。我知道问题是什么,但我不知道如何解决它。当我试图生成JSON时,来自第一组
level\u 2\u objName
存储,然后移动到下一组
级别2\u对象名
,因为该特定输入的ID名称重置为
级别2\u对象名+j
。您可以在这里看到控制台输出=>有什么想法吗?我知道修复需要发生在for循环的内部
parseData()

var categoryAmount=document.getElementById('category_amount');
var generateBtn=document.getElementById('generate_btn');
var parseBtn=document.getElementById('parse_btn');
var generatedInputs=document.getElementById('generated_inputs');
var generatedJson=document.getElementById('generated_json');
var parsedContainer=document.getElementById('container_parsed-html');
var totalCategoryMount=parseInt(categoryMount.value);
//创建包含JSON数据的数组和对象
var AllLevelsArray=[];
变量级别_1_名称_数组=[];
函数createInputs(){
var listContainer=document.createElement('div');
listContainer.className='list_container';
var level_1_label=document.createElement('h3');
level_1_label.textContent='level-1类别名称#'+(i+1);
var level_1_name=document.createElement('input');
level_1_name.className='form control'+'level_1-name'+[i]+'level_1';
level_1_name.setAttribute('placeholder','level-1 name');
var level_2_list_label=document.createElement('h3');
level_2_list_label.textContent='有多少个level 2类别用于#'+(i+1);
变量级别列表金额=document.createElement('input');
level_2_list_amount.className='表单控制'+'level_2_list_amount'+[i]+'level_2';
二级列表金额。setAttribute('占位符','有多少二级类别?');
级别列表金额。setAttribute('id','级别列表金额'+[i])
var level_2_gen_btn=document.createElement('button');
level_2_gen_btn.className='btn btn默认level_2-btn';
level_2_gen_btn.textContent='Generate level 2';
listContainer.appendChild(级别1标签);
appendChild(级别1\u名称);
appendChild(2级列表标签);
listContainer.appendChild(二级列表金额);
listContainer.appendChild(级别2\u gen\u btn);
generatedInputs.appendChild(listContainer);
level\u 1\u name\u array.push(level\u 1\u name);
级别2生成btn.addEventListener('单击',函数()){
对于(i=0;i

导航发生器
工作原理
  • 输入您需要的级别1类别的数量
  • 输入2级和/或3级类别所需的相应数量
  • 您需要多少级别1类别? 生成 解析HTML
    问题在于2级输入字段的选择。您可以在id上选择它们:
    var level_2_objName=document.getElementById('level_2_name'+j)

    对于每个1级,j从零开始。id在整个文档中必须是唯一的。如果创建两个具有相同id的元素,则会违反html标准。所有的普通浏览器都接受它,但是如果您选择了一个id,它每次都会返回第一个带有这个id的元素

    解决方案 你的问题不需要id。改用css类或名称属性。一个css类可以在一个文档中多次使用,您可以选择它的css类上的每个元素。与name属性相同。name属性提供了这种可能性