Честно, это походит на прекрасную идею, хотя Jason Punyon, конечно, прав, что необходимо сделать большое пропалывание перед тратой существенного количества времени разработчиков на отходах. Вы получаете представление о важной метрике из него, это иначе почти недоступно в интервьюировании: с чем чей-то любить работать.
я не думаю, что существует действительно любая потребность, которая будет касаться этого являющийся "справедливым" на основе темы или пытающийся представить последовательные ситуации различным кандидатам при поддержании права evaluatory отношение - что это не о том, получили ли они "правильный ответ" или перешли через правильный набор обручей, но какое усилие, решение проблем, коммуникационную способность и гибкость они показали. Вы потеряли бы большую часть преимущества осуществления путем превращения его в искусственный тест, не говоря уже об изменении его от чего-то, что разработчики могут извлечь некоторую пользу из (или по крайней мере все еще получить некоторую работу, сделанную во время) к крупной пустой трате их времени.
Я полагаю, что вы хотите очистить все children, а не только прямых потомков, поэтому он должен быть рекурсивным. Поскольку разные элементы ввода очищаются по-разному, вам необходимо проверить их тип, чтобы знать, что с ними делать. Я предполагаю, что вы хотите также очистить текстовые поля, но оставить кнопки без изменений:
function clearChildren(element) {
for (var i = 0; i < element.childNodes.length; i++) {
var e = element.childNodes[i];
if (e.tagName) switch (e.tagName.toLowerCase()) {
case 'input':
switch (e.type) {
case "radio":
case "checkbox": e.checked = false; break;
case "button":
case "submit":
case "image": break;
default: e.value = ''; break;
}
break;
case 'select': e.selectedIndex = 0; break;
case 'textarea': e.innerHTML = ''; break;
default: clearChildren(e);
}
}
}
Вызовите его со ссылкой на элемент:
clearChildren(document.getElementById('IdOfTheDiv'));
Редактировать:
Забыл выбрать ...
Редактировать 2:
Некоторые исправления: childNodes.length, обработка элементов без значений tagName и верхнего регистра tagName.
Oh boy, this would be a one liner with jQuery:
$(':input:not(:button)', div).val([])
Without jQuery you've got to account for fields, text fields, password fields and radio/checkbox fields:
function clearFields(container) {
var selects = container.getElementsByTagName('select');
for(var i=0, len=selects.length; i < len; i++) {
selects[i].selectedIndex = -1;
}
var fields = container.getElementsByTagName('input');
for(var i=0, len=fields.length; i < len; i++) {
var field = fields[i];
switch(field.type)
{
case 'radio':
case 'checkbox':
field.checked = false;
break;
case 'text':
case 'password':
case 'hidden':
field.value = ''
}
}
var fields = container.getElementsByTagName('textarea');
for(var i=0, len=fields.length; i < len; i++) {
fields[i].value = ''
}
}
Ответ Карима работает хорошо. Я думаю, что при использовании jQuery все будет примерно так:
$("#myDiv").each(function(){
if($(this).type == "input")
$(this).val('');
});
На самом деле, если подумать, вы также можете попробовать:
$("#myDiv input").val('');//myDiv is your Div name
Очень просто с jQuery:
$('#myDiv').children().find('input,select').each(function(){
$(this).val('');
});
Мы можем поставить столько тегов в вызове «Найти».