Я создал код, который динамически создает некоторые поля в элементе SPAN. Одним из полей является значок удаления, который при нажатии кнопки запускает функцию для удаления выбранного диапазона. Теперь я хочу создать функцию, которая просто вытирает все промежутки, звучит просто, но она ломается после первого.Как очистить все динамически созданные элементы SPAN
Это пример моего кода (модифицировал его для простоты):
<form>
<input type='text' id='item' value=''/>
<input type="button" value="Add" onclick="addItem()"/>
<input type="button" value="Clear All" onclick="clearItems()"/>
<span id="myForm"></span>
</form>
<script>
var global_i = 0; // Set Global Variable i
function increment()
{
global_i += 1; // Function for automatic increment of field's "ID" attribute.
}
function addItem()
{
increment();
var item = document.getElementById("item").value;
var br = document.createElement('BR');
var ip = document.createElement("INPUT");
var im = document.createElement("IMG");
var el = document.createElement('SPAN');
ip.setAttribute("type", "text");
ip.setAttribute("value", item)
ip.setAttribute("Name", "text_item_element_" + global_i);
ip.setAttribute("id", "id_item_" + global_i);
ip.setAttribute("style", "width:80px");
im.setAttribute("src", "delete.png");
im.setAttribute("onclick", "removeSpanElement('myForm','id_" + global_i + "')");
el.appendChild(ip);
el.appendChild(im);
el.appendChild(br);
el.setAttribute("id", "id_" + global_i);
document.getElementById("myForm").appendChild(el);
}
function removeSpanElement(parentDiv, childDiv)
{
if (childDiv == parentDiv){
return false;
}
else if (document.getElementById(childDiv)){
var child = document.getElementById(childDiv);
var parent = document.getElementById(parentDiv);
parent.removeChild(child);
return true;
}
else{
// Child div has already been removed or does not exist
return false;
}
}
/* This function only clears 1st span */
function clearItems()
{
var remove = true;
var i = 1;
while(remove){
remove = removeSpanElement("myForm","id_" + i);
i++;
}
global_i = 0;
}
</script>
В каждой строке для изображения я создал обработчик OnClick событие для запуска функции removeSpanElement (parentDiv, childDiv), и это работает хорошо. Поэтому, чтобы очистить их все, я думаю, что просто запускаю функцию через инкрементный цикл, clearItems(), но он останавливается после удаления первого, и я не могу понять, почему.
Я не могу видеть даже как метод добавления мог работать. 'in' является зарезервированным ключевым словом, вы не можете использовать его как имя переменной. – Teemu
К сожалению, за это не указывается. Оригинал немного сложнее, поэтому я изменил код, который я собирался разместить в блокноте. – Randy