#javascript #jquery #dom
#javascript #jquery #dom
Вопрос:
функция user_delete должна перебирать параметры поля выбора и получать имя класса, если значение соответствует аргументу provides, хранящему их в переменной
затем выполните цикл по документу и удалите все элементы с этим конкретным классом исключение, если в span есть этот элемент класса, удалите только значение этого элемента
операторы запроса работают отдельно
, вставка их в функцию on, похоже, не имеет эффекта
function user_delete(filename) {
$("#select_updateFile option").each(function(i){
if ($(this).val() === filename ) {
var class_name = $(this).attr('class');
}
document.querySelectorAll(class_name).forEach(function (e) {
if ($(e).prev().is("span")) {
$(e).empty();
} else {
e.remove();
}
}
);
});
}
Комментарии:
1. По какой-либо причине у вас есть 2 foreach, вложенных один в другой? Кажется, вы могли бы сделать первое, добавить результат в массив, а затем отдельно делать все, что вы делаете с queryselector
2. логика заключалась в том, чтобы перебрать это поле выбора specif, чтобы получить classname
3. Да, но тогда вы выполняете вложенный forloop КАЖДЫЙ раз для каждого элемента в списке, даже для тех, которые не совпадают.
Ответ №1:
Вы можете получить значение параметра без перебора с помощью селектора.
Затем, если это значение существует, найдите класс. Затем для spans установите для innerHTML значение empty .
Затем вы можете найти не-области с тем же классом и полностью удалить их из dom.
CSS существует только для того, чтобы было очевидно, что диапазон пуст, но все еще существует.
function user_delete(filename) {
opt = document.querySelector("#select_updateFile option[value='" filename "']")
if(opt){
_class = opt.getAttribute("class")
spans = document.querySelectorAll("span." _class)
spans.forEach(function(span){
span.innerHTML = "";
})
nonspans = document.querySelectorAll("." _class ":not(span)")
nonspans.forEach(function(el){
el.remove();
})
}
}
user_delete("aa")
span.test{display:block;background:red;height:40px;width:140px;}
<span class="test">EMPTY ME</span>
<div class="test">DELETE ME</div>
<select id="select_updateFile">
<option class="test" value="aa">33</option>
<option class="testa" value="bb">22</option>
</select>