Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 查找上一个元素的动态子元素_Javascript_Html_Css - Fatal编程技术网

Javascript 查找上一个元素的动态子元素

Javascript 查找上一个元素的动态子元素,javascript,html,css,Javascript,Html,Css,这是我当前的html: <div class="wrapper"> <div class="label"></div> <div class="warning"></div> // Dynamic </div> <div class="input"></div> . . . // repeated 3 more times 可能错过了一些明显的事情(除了完全虚构) 我想你的问题可能是

这是我当前的html:

<div class="wrapper">
    <div class="label"></div>
    <div class="warning"></div> // Dynamic
</div>
<div class="input"></div>
.
.
. // repeated 3 more times

可能错过了一些明显的事情(除了完全虚构)

我想你的问题可能是

input.previousElementSibling.removeChild(document.querySelector('.warning');
尝试从previousElementSibling中删除在整个文档中找到的第一个.warning元素

试一试

const warningDiv=input.previousElementSibling.querySelector(“.warning”);
if(warningDiv)warningDiv.remove();

您需要将查询范围限定到上一个元素:


input.previousElementSibling.removeChild(input.previousElementSibling.querySelector('.warning')

看起来应该可以,但仍然得到
未捕获类型错误:未能在“节点”上执行“removeChild”:参数1不是“节点”类型。
是的,看起来不错,但我得到
未捕获类型错误:无法读取null的属性“remove”
啊,我忽略了问题的动态部分。我会编辑来修正这部分也是我的错,但那太好了,谢谢!
const inputs = document.querySelectorAll('.input');

inputs.forEach(input => {
    input.addEventListener('focus', () => {
        input.classList.remove('input--invalid')
        input.previousElementSibling.removeChild(document.querySelector('.warning'));
    });
});