通过单击父类';JavaScript中的兄弟项

通过单击父类';JavaScript中的兄弟项,javascript,html,css,Javascript,Html,Css,我正在编写一个“获取卡片”脚本,它包括两个阶段。 选择卡片>将在右侧打开一个相关窗口 按下打开的窗口>上的立即应用按钮可打开底部的相关窗口 现在,一切都按预期运行,除了: 我想这样做,如果一个人删除一个卡片选择(.gacca1/.gacca2),它也会从“Get card”div(.gaccaiGET)中删除“activated”类,从而删除底部div(.gara)。现在,即使您停用了卡片选择器,它也会保持“获取卡片”处于激活状态 无论我如何尝试(以我的初学者js技能),我都无法让它工作 此外,

我正在编写一个“获取卡片”脚本,它包括两个阶段。 选择卡片>将在右侧打开一个相关窗口 按下打开的窗口>上的立即应用按钮可打开底部的相关窗口

现在,一切都按预期运行,除了: 我想这样做,如果一个人删除一个卡片选择(.gacca1/.gacca2),它也会从“Get card”div(.gaccaiGET)中删除“activated”类,从而删除底部div(.gara)。现在,即使您停用了卡片选择器,它也会保持“获取卡片”处于激活状态

无论我如何尝试(以我的初学者js技能),我都无法让它工作

此外,如果您查看html和css,您将看到大多数元素都是绝对定位的,这是一种非常糟糕的方法。不幸的是,我无法找到一种使位置相对的方法,因为

.divclass.active + .otherdivclass { css }
仅适用于兄弟元素,甚至仅适用于相邻的兄弟元素。这导致了编写糟糕的html和css,使其外观和工作方式符合我的要求。如果你对这件事有任何建议,请告诉我

谢谢


据我所知,您应该首先切换“.gaccai”中在“.active”父级之后的所有div的“.active”。尝试稍微更改函数toggleClass:

var toggleClass = function (className, element) {
        var array = document.querySelectorAll('.' + element.classList + ' + .gaccai .active');
        for (var i = 0; i < array.length; i++) {
            array[i].classList.toggle(className);
        }
        element.classList.toggle(className);
    };
var-toggleClass=函数(类名,元素){
var数组=document.querySelectorAll('.+element.classList++'+.gaccai.active');
对于(var i=0;i
大多数元素都是绝对定位的事实上绝对定位是CSS选择器的朋友,在某些情况下通常CSS选择器无法选择元素,但如果您交换元素并使用绝对定位来定位它们,CSS选择器将起作用。我不明白这里有什么问题,演示似乎很好,选择左侧的项目将显示“获取卡片”按钮。。。再次单击它将隐藏该按钮。这不是您想要的吗?所以,您不认为css和html有问题吗?很高兴知道!至于Javascript问题,我的意思是,一旦你点击打开窗口中的“获取卡片”按钮,它就会打开另一个窗口。一旦您删除卡片选择,该窗口不会再次关闭。卡片>卡片窗口>获取卡片窗口。当您关闭“卡片窗口”时,“获取卡片窗口”也应自动关闭,当您再次打开同一张“卡片”时,它不应显示先前打开的“获取卡片窗口”。我希望我的解释足够好。我没有看到任何打开或关闭的可见窗口,所有所谓的窗口都是最初显示的,我没有查看HTML代码,但为了更清楚,我们必须知道窗口是如何打开/关闭的。也许窗户看起来怎么样?它们看起来都像带边框的普通元素(正如我所说的,它们以初始方式显示,无需等待您单击或选择某些内容)。如我在这里所示-单击1>打开1。单击2>打开2。再次单击2时-关闭2。再次单击1时-关闭1。但是,如果您单击1>打开1,单击2>打开2,然后再次单击1-它关闭1,如果您再次单击1-它打开1,其中已打开2。我正试图这样做,当你关闭1时,它会自动关闭里面的2,这样当你再次单击1时,2不会自动打开,因为它以前已经被激活了。谢谢,效果相当好!它看起来很奇怪,特别是在使用i++时,但我想,我会在以后的旅程中理解它。
var toggleClass = function (className, element) {
        var array = document.querySelectorAll('.' + element.classList + ' + .gaccai .active');
        for (var i = 0; i < array.length; i++) {
            array[i].classList.toggle(className);
        }
        element.classList.toggle(className);
    };