Javascript 添加HTML直到达到要求

Javascript 添加HTML直到达到要求,javascript,html,Javascript,Html,我正在尝试创建一个表单,我需要用户添加至少3年的地址数据。但是,根据用户输入的年数是否正确,我在添加和删除字段方面遇到了问题 例如,将1添加到下面的年份框中3次就可以了。我得到了3组地址字段,但若用户将最后一组更改为2年,则会添加第4组,而实际上什么都不会发生 如果我将第二个地址改为2/3年,似乎也会出现问题,它会删除下面的地址,但将其改回1年并不会重新添加这些附加字段 希望这是有意义的,我只是需要一只手来让这个逻辑工作,因为我无法理解它。不要评论我为生成HTML而创建的函数,这只是为了完成这项

我正在尝试创建一个表单,我需要用户添加至少3年的地址数据。但是,根据用户输入的年数是否正确,我在添加和删除字段方面遇到了问题

例如,将1添加到下面的年份框中3次就可以了。我得到了3组地址字段,但若用户将最后一组更改为2年,则会添加第4组,而实际上什么都不会发生

如果我将第二个地址改为2/3年,似乎也会出现问题,它会删除下面的地址,但将其改回1年并不会重新添加这些附加字段

希望这是有意义的,我只是需要一只手来让这个逻辑工作,因为我无法理解它。不要评论我为生成HTML而创建的函数,这只是为了完成这项工作,请坚持主题

注意:忽略下面3个功能,它们不是问题所在,也不是我的优先事项。

let地址={
“#地址_0处的#年_”:{/*默认值*/
elm:document.querySelector(“#years_at_address_0”),
值:0,
父项:“#以前的地址”,
加:假
}
};
功能设置地址检查(手表)
{
if(地址[监视]==未定义){
地址[监视]={
elm:document.querySelector(监视),
值:0,
父项:“#previousAddress”+(Object.keys(addresses).length>0?Object.keys(addresses).length:”,
加:假
};
}
让计数=对象。键(地址)。长度;
地址[watch].elm.addEventListener('change',function()){
if(this.value&&地址[watch].value!==this.value){
地址[watch].value=parseInt(this.value);
if(calculateYears()&&!地址[watch]。已添加){
document.querySelector(“#yearsAdditional”).appendChild(createNewAddress());
地址[watch].added=true;
setupAddressChecking(地址处的年数+计数);
}
}
});
}
函数计算器()
{
让计数=0;
让移除=假;
常量键=对象键(地址);
对于(变量i=0;i3){
移除=真;
current.added=false;
document.querySelector(current.parent).parentNode.removeChild(document.querySelector(current.parent));
删除地址[键[i]];
}
计数+=当前值;
}
如果(计数==3){
返回false;
}
返回!移除;
}
函数createNewAddress()
{
让计数=对象。键(地址)。长度;
返回createHTML({
0:{elm:createElement('div',{'id':'previousAddress'+count}),根目录:null},
1:{elm:createElement('div'),根:0},
2:{elm:createElement('div'),根:1},
3:{elm:createElement('label',{'for':'previous_address','text':'address'}),root:2},
4:{elm:createElement('div'),根:1},
5:{elm:createElement('textarea'{
“科尔斯”:40岁,
'id':'previous_address'+计数,
'name':'finprop_previous_address',
“占位符”:“上一个地址”,
“行”:4
}),root:4},
6:{elm:createElement('div'),根:1},
7:{elm:createElement('div',{'id':'previous_row_postcode'+count}),根目录:0},
8:{elm:createElement('div'),根:7},
9:{elm:createElement('label',{'for':'previous_postcode','text':'postcode*}),根目录:8},
10:{elm:createElement('div'),根:7},
11:{elm:createElement('input'{
'id':'previous_postcode'+计数,
'姓名':'以前的邮政编码',
'占位符':'邮政编码',
“类型”:“文本”,
“maxlength”:8
}),root:10},
12:{elm:createElement('div'),根:7},
13:{elm:createElement('div',{'id':'row\u months\u years\u at\u address'+count}),根:0},
14:{elm:createElement('div'),根:13},
15:{elm:createElement('label',{'for':'years_at_address_'+count,'text':'How long at address*'}),根:14},
16:{elm:createElement('div'),根:13},
17:{elm:createElement('div'),根:16},
18:{elm:createElement('input'{
“id”:“地址所在年份”+计数,
“maxlength”:2,
“min”:0,
“姓名”:“finprop_years_at_address”,
“占位符”:“年”,
“大小”:4,
“类型”:“文本”,
“类别”:“地址所在年份”
}),root:17},
19:{elm:createElement('div'),根:16},
20:{elm:createElement('input'{
“id”:“地址处的月数”+计数,
“maxlength”:2,
“min”:0,
'name':'finprop_months_at_address',
“占位符”:“月份”,
“大小”:4,
“类型”:“文本”
}),root:19},
21:{elm:createElement('div'),根:13}
})[0].榆树;
}
函数createHTML(元素)
{
让keys=Object.keys(元素);
对于(变量i=0;i
fieldset>div{
填充:10px;
边缘
    count += current.value;
    if (count > 3) {
        remove = true;
        current.added = false;
        document.querySelector(current.parent).parentNode.removeChild(document.querySelector(current.parent));
        delete addresses[keys[i]];
    }