如何在javascript克隆中访问底层元素的ID?

如何在javascript克隆中访问底层元素的ID?,javascript,html,dom,setattribute,Javascript,Html,Dom,Setattribute,我正在创建一个表单。在输入部分,我使用一个表来组织输入行。加载页面时,当前显示一行。如果用户需要额外的行,那么用户单击标记为additional的按钮,它将克隆div。我已经能够更改创建的每个额外div的id,但是我还需要更改底层元素的id。这是html部分: <table id="input_values"> <tr id="addtl_country_0"> <td> <select name="cou

我正在创建一个表单。在输入部分,我使用一个表来组织输入行。加载页面时,当前显示一行。如果用户需要额外的行,那么用户单击标记为additional的按钮,它将克隆div。我已经能够更改创建的每个额外div的id,但是我还需要更改底层元素的id。这是html部分:

<table id="input_values">
    <tr id="addtl_country_0">
        <td>
            <select name="countryToVisit" id="countryToVisit" required="">
                <option selected disabled value="select-country">Select Country</option>
                <option value="uk">United Kingdom</option>
                <option value="germany">Germany</option>
                <option value="chinahk">China/Hong Kong</option>
            </select>
        </td>
    </tr>
</table>
使用我目前拥有的javascript,每个额外的div id都会发生变化:addtl_country_0=>addtl_country_1。我希望能够使用select ID做类似的事情,即countryToVisit=>countryToVisit_1


如果有更好的方法,我也愿意听听。此输入的输出是创建一个静态表,在第一列中显示所选国家,后续列将取决于该国家。

您可以从克隆对象中获取select元素,然后更新其id。以下是示例代码,您可以将其扩展为通用fn

功能addtlCountry{ 让addtlRow=document.getElementById'addtl_country_0'; 让table=document.getElementById'input_values'; 让clone=addtlRow.cloneNodetrue; var select=clone.getElementsByTagName'select'; 选择[0]。id=选择[0]。id+\u 1; 表1.1.1克隆; updateIdclone.childNodes; CountriesCenter++; } 您可以使用克隆并设置其属性

设CountriesCenter=1; document.getElementByIdadd-line.addEventListenerclick,addtlCountry; 功能addtlCountry{ 让addtlRow=document.getElementById'addtl_country_0'; 让table=document.getElementById'input_values'; 让clone=addtlRow.cloneNodetrue; clone.id=addtl\u country\u+countriesconter; const select=clone.querySelectorcountryToVisit; 选择.id=country访问\+countriesconter; //或者改为Country访问[+CountriesCenter+] 选择.name=country访问\+countriesconter; 表1.1.1克隆; CountriesCenter++; } 选择国家 大不列颠联合王国 德国 中国/香港
这正是我想要的!非常感谢。PS也非常有用。我们的目标是使用数组来填充表,这无疑会使它变得更简单。@Imoreno21欢迎您:请确保将初始addtl_country_0中选择的名称也更改为countryToVisit[0]。否则,行为将是任意的,您可能会丢失0值,但我不确定会发生什么。
let countriesCounter = 1;

function addtlCountry() {
    let addtlRow = document.getElementById('addtl_country_0');
    let table = document.getElementById('input_values');
    let clone = addtlRow.cloneNode(true);
    clone.id = "addtl_country_" + countriesCounter;
    table.appendChild(clone);

    countriesCounter++;
}