【发布时间】:2019-12-02 12:48:30
【问题描述】:
我在一个父 div 中有两个 div。我需要更改我单击的子 div 的类。为此,我正在编写一种方法来检查单击了哪个孩子,并分别尝试隐藏另一个孩子 div。 但我无法添加类或删除类,因为索引始终显示为未定义。我感觉 return 语句有问题。
function changeClass() {
const list = document.getElementById('my_div').children;
const indx = this.getIndexOfParent(list);
for (let i = 0; i < list.length; i++) {
if (indx === 0) {
list[indx + 1].classList.add("d-none d-sm-block");
list[indx].classList.remove("col-6 d-none d-sm-block");
} else if (indx === 1) {
list[indx - 1].classList.add("d-none d-sm-block");
list[indx].classList.remove("col-6 d-none d-sm-block");
}
list[indx].classList.add("d-xs-block");
}
}
function getIndexOfParent(child_list) {
for (var i = 0, len = child_list.length; i < len; i++) {
((index) => {
child_list[i].onclick = () => {
return index;
};
})(i);
}
}
.row {
background: #f8f9fa;
margin-top: 20px;
}
.row > div {
border: solid 1px black;
padding: 10px;
}
<div class="container">
<div class="row">
<div onclick="changeClass()" class="col-md-6 col-6">
child-div-1
</div>
<div onclick="changeClass()" class="col-md-6 col-6">
child-div-2
</div>
</div>
</div>
我想要的是,当我点击 child-div-1 时,它应该隐藏 child-div-2,反之亦然仅适用于小屏幕(这就是我使用 col 处理它的原因-6 和 d-xs-block 类) 谁能帮我解决以下问题。
【问题讨论】:
-
一开始这没什么意义……每次调用 changeClass 时,您都在为所有这些元素添加一个新的附加点击处理程序。
-
如果您通过 HTML 属性使用那种老式的事件处理程序绑定,
onclick="changeClass()"- 那么您最好将标识符或索引传递给那里的函数,onclick="changeClass(0)",并且用它来确定你需要做什么。 -
实际上有一个按钮单击,我需要处理这些,但现在我需要更改这些类。你能告诉我正确的做法吗?
-
子组件是使用角度动态注入的,这就是为什么我无法在事件中传递值
标签: javascript css twitter-bootstrap typescript