【发布时间】:2020-05-03 08:31:32
【问题描述】:
我想做一个高级标签,但是我做不到
我有 15 个从页面(按钮)获得的元素。 我们还从页面 (span) 中获得了 5 个元素。
我希望在单击每个元素(按钮)时,将“活动”类分配给它,但有一个条件:当您单击此数组中的随机元素时,“活动”类被分配给之后,如果您单击另一个元素(随机),则“活动”类也被分配给它,但是如果您单击第三个,再次随机元素,则“活动”类已从第一个中删除按下按钮(按钮),但第二个和第三个仍然存在,依此类推。有一个条件,如果我们按下 1 或 2 或 3(按钮),那么类“active-span”被分配给第一个元素(跨度),如果我们按下例如 2 和 6(按钮),那么类“active-span”被分配了 1 和 2 个元素(span),但是如果我们按下 2 和 6(按钮)并按下 8(按钮),那么对于 1 个元素(span)我们删除类“active-span”,并将“active-span”分配给 3 个元素(跨度)。
告诉我解决方案的逻辑。
我的代码:https://codepen.io/MrMarten/pen/eYmLEPv
let elem = document.querySelectorAll('button');
let elemActive = [];
let span = document.querySelectorAll('span');
let spanActive = [];
for (let x of elem) {
x.addEventListener('click', handlerChange)
}
function handlerChange(event) {
if (!this.classList.contains('active')) {
this.classList.add('active');
if (elemActive.push(this) == 3) {
elemActive[0].classList.remove('active');
elemActive.shift();
}
}
};
.active {
color: red;
}
.active-span {
color: red;
border-color: red;
}
span {
margin: 5px 10px;
border: 1px solid;
padding: 5px;
}
.d-flex {
display: flex;
border: none;
}
<div class="d-flex">
<span>1-3</span>
<span>4-6</span>
<span>7-9</span>
<span>10-12</span>
<span>13-15</span>
</div>
<button>1</button>
<button>2</button>
<button>3</button>
<button>4</button>
<button>5</button>
<button>6</button>
<button>7</button>
<button>8</button>
<button>9</button>
<button>10</button>
<button>11</button>
<button>12</button>
<button>13</button>
<button>14</button>
<button>15</button>
【问题讨论】:
-
在你的描述的最后你说 "...并把 "active-span" 分配给 3 个元素 (span)。"。我以为只有 2 个,而不是 3 个。如果只有 2 个处于活动状态的按钮,那么怎么会有 3 个处于活动状态的跨度?
-
对不起,我的错误,是的,你是对的,一次只能激活 2 个跨度
标签: javascript html