Поскольку вы меняете .className
blockSet
, который является HTMLCollection
. Коллекция, которая имеет элементы с одним и тем же классом (block-default
), изменится, когда элементы будут испытывать некоторые обновления.
Другими словами, когда вы меняете .className
элемента, коллекция исключает этот элемент. Это означает, что размер HTMLCollection
уменьшится. Также размер будет увеличиваться, если элемент с этим классом добавлен в DOM.
Чтобы решить эту проблему, вы всегда можете изменить только первый элемент .className
.
for(var i = 0; i
Примечания: Integer для изменения элемента класса по элементу, вы можете перебирать элементы с помощью for
и изменять .className
.
var blockSet = document.getElementsByClassName("block-default");
var blockSetLength = blockSet.length;
console.log(blockSet);
for(var i = 0; i
.block-default {
width: 100px;
height:50px;
background-color: green;
border: 1px solid red;
padding:10px;
}
.block-selected {
width: 100px;
height:50px;
background-color: blue;
border: 1px solid white;
padding:10px;
}
BLOCK1
BLOCK2
BLOCK3
BLOCK4
BLOCK5
BLOCK6
BLOCK7
BLOCK8
Если вы добавите новый элемент в DOM (а не в коллекцию), размер увеличится, как показано в примере ниже.
var blockSet = document.getElementsByClassName("block-default");
var blockSetLength = blockSet.length;
alert("Current size: " + blockSet.length);
document.body.innerHTML += 'BLOCK9';
alert("After adding an element in DOM size: " + blockSet.length);
.block-default {
width: 100px;
height:50px;
background-color: green;
border: 1px solid red;
padding:10px;
}
.block-selected {
width: 100px;
height:50px;
background-color: blue;
border: 1px solid white;
padding:10px;
}
BLOCK1
BLOCK2
BLOCK3
BLOCK4
BLOCK5
BLOCK6
BLOCK7
BLOCK8
Вы можете использовать group by
и having
для идентификации групп:
select f_name
from t
group by f_name
having sum( (Type1 = 1) ) > 0 and
sum( (Type1 = 2) ) > 0 and
sum( (Type1 in (1, 2) ) = count(*);
Каждое условие в предложении having
подсчитывает количество строк, соответствующих условию. В > 0
говорится, что есть хотя бы одна строка. = count(*)
говорит, что все строки соответствуют.