У меня есть dl, содержащий несколько полей ввода, которые я "клонирую" с помощью небольшого количества JavaScript, например:
var newBox = document.createElement('dl');
var sourceBox = document.getElementById(oldkey);
newBox.innerHTML = sourceBox.innerHTML;
newBox.id = newkey;
document.getElementById('boxes').appendChild(columnBox);
В IE форма в sourceBox дублируется в newBox вместе со значениями, введенными пользователем. В Firefox последнее значение, введенное в исходном поле sourceBox, отсутствует в newBox. Как мне сделать эту "палку"?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы можете попробовать метод cloneNode. Он мог бы лучше копировать содержимое. Это также должно быть быстрее в большинстве случаев
var newBox;
var sourceBox = document.getElementById(oldkey);
if (sourceBox.cloneNode)
newBox = sourceBox.cloneNode(true);
else {
newBox = document.createElement(sourceBox.tagName);
newBox.innerHTML = sourceBox.innerHTML;
}
newBox.id = newkey;
document.getElementById('boxes').appendChild(newBox);
Не работает document.getElementById? У меня создалось впечатление, что это кроссбраузерно
Спасибо, ребята.
Я получил работу, используя прототип и изменив document.getElementById(oldkey)
согласно $(oldkey).
<script src = "j/prototype.js" type = "text/javascript"></script>
var newBox;
var sourceBox = $(oldkey);
if (sourceBox.cloneNode)
newBox = sourceBox.cloneNode(true);
else {
newBox = document.createElement(sourceBox.tagName);
newBox.innerHTML = sourceBox.innerHTML;
}
newBox.id = newkey;
document.getElementById('boxes').appendChild(newBox);
Я заставил это работать, используя прототип и изменив var sourceBox = document.getElementById (oldkey); в var sourceBox = $ (oldkey);