Можно ли клонировать шаблон, а затем увеличивать идентификатор шаблона после клонирования и как использовать новый идентификатор после клонирования.
Я хочу <div id= "id1">
или создать новый идентификатор для <div id= "id1">
Я хочу изменить идентификатор div, который включен в мой шаблон.
Вот мой код:
function cloneNewId() {
var tmpl = document.getElementById('tempId');
document.body.appendChild(tmpl.content.cloneNode(true));
}
cloneNewId();
cloneNewId();
<template id="tempId">
<div id = "id1">
<select id = "Id">
<option value= "1"> </option>
<option value="2"> </option>
</select>
</div>
</template>
Подробнее о шаблонах в MDN, который является отличным ресурсом javascript, который всегда есть под рукой.
Вы можете получить клонированный div с помощью Element.querySelector и установить идентификатор непосредственно в клонированном div. Кроме того, поскольку invoker захочет узнать вновь сгенерированный идентификатор, функция может вернуть свое значение:
let currentId = 1;
function cloneNewId() {
const tmpl = document.getElementById('tempId');
const clone = tmpl.content.cloneNode(true);
const div = clone.querySelector('#id1');
currentId += 1;
div.id = 'id${currentId}';
document.body.appendChild(clone);
return div.id;
}
// Example:
console.log('First ID is:', cloneNewId());
console.log('Second ID is:', cloneNewId());
<template id="tempId">
<div id = "id1">
<select id = "Id">
<option value= "1"> </option>
<option value="2"> </option>
</select>
</div>
</template>
getElementById('id2')
или id3
и т. Д.
Вы можете увеличить свой идентификатор div, используя следующий код. Я думаю, что этот пример кода решает вашу проблему
var tmpl = document.getElementById('tempId');
document.body.appendChild(tmpl.content.cloneNode(true));
var append=tmpl.content.cloneNode(true);
append.children[0].id="id2";
console.log(append,"Append");
document.body.appendChild(append);
<template id="tempId">
<div id = "id1">
<select id = "Id">
<option value= "1"> </option>
<option value="2"> </option>
</select>
</div>
</template>
Если вы хотите создать шаблон многократного использования, вы можете просто вернуть литерал шаблона в виде такой функции:
В приведенном ниже коде будет указатель, который вы хотите увеличить в качестве параметра, и использовать его в функции.
Функция вернет шаблон после его вызова.
Вы можете вызвать функцию и ввести свой шаблонный идентификатор независимо от того, что вы хотите.
function cloneTemplate(index, newID) {
return '
<div id="${newID}">
<span>Generate your own template here</span>
<p>Hello ${index}</p>
</div>
'
}
let body = document.querySelector('body')
for (let i = 0; i < 3; i++) {
body.innerHTML += cloneTemplate(i, 'template${i}')
}
Эта вещь будет выводить шаблон три раза с другим идентификатором.
Это то, чего вы хотите достичь?