Расширяя приведенное здесь решение , вы можете назначить переменную allFiles
всем прямым дочерним элементам, используя селектор CSS Child Combinator">" как это:
/* JavaScript */
var allFiles = document.querySelectorAll("#FileContainer > div");
var btn = document.querySelector("button");
var val = document.getElementById("val");
function func() {
allFiles.forEach(div => {
if (div.id == val.value) {
div.style.display = "none";
}
});
}
btn.addEventListener("click", func);
/* CSS */
#FileContainer {color: white;}
#test-1 {background-color: green;}
#test-2 {background-color: green;}
#test3 {background-color: red;}
#test4 {background-color: red;}
<!--HTML-->
<div id="FileContainer">
<div id="test-1">Direct Child 1<div id="test3">Not Direct Child 1</div></div>
<div id="test-2">Direct Child 2<div id="test4">Not Direct Child 2</div></div>
</div>
<hr>
<input type="text" id="val" />
<button>Check ID</button>
<hr>
jsFiddle с использованием CSS дочерний комбинатор селектор ">" :http://jsfiddle.net/AndrewL64/5nuedztx/20/
Или, если вы уверены, что под вашим #FileContainer
div нет других элементов, на которые вы хотите нацелиться, вы можете использовать .children свойство типа этого:
/* JavaScript */
var allFiles = document.querySelector("#FileContainer").children;
var btn = document.querySelector("button");
var val = document.getElementById("val");
function func(){
[].forEach.call(allFiles, (div => {
if (div.id == val.value) {
div.style.display = "none";
}
}))
}
btn.addEventListener("click", func);
/* CSS */
#FileContainer {color: white;}
#test-1 {background-color: green;}
#test-2 {background-color: green;}
#test3 {background-color: red;}
#test4 {background-color: red;}
<!-- HTML -->
<div id="FileContainer">
<div id="test-1">Direct Child 1<div id="test3">Not Direct Child 1</div></div>
<div id="test-2">Direct Child 2<div id="test4">Not Direct Child 2</div></div>
</div>
<hr>
<input type="text" id="val" />
<button>Check ID</button>
<hr>
jsFiddle с использованием .children
: http://jsfiddle.net/AndrewL64/zkgjxhfc/30/