@polm

Как выбрать только «text text1» в elems, без «text text1 text2»?

Здравствуйте!

Есть классы "text text1" и "text text1 text2".

Если получение элементов такое:
var elems = document.getElementsByClassName("text text1");

, то туда попадают и "text text1 text2", но мне они не нужны.

Пробовал намутить так:
var elems = document.getElementsByClassName("text text1" && !"text text1 text2");

не работает.

Как выбрать только "text text1" в elems, без "text text1 text2"?

Или, если "text text1 text2" все равно попадет в массив, как это из массива удалить?

Таким образом не получилось:
for(var i=0;i<elems.length;i++){
 var string = String(elems);
    substring = "text text1 text2";
if(string.indexOf(substring) !== -1)
elems.splice(i, 1);
}


Спасибо!
  • Вопрос задан
  • 93 просмотра
Решения вопроса 2
@polm Автор вопроса
На всякий случай напишу тут, как разобрался со своей задачкой с помощью jQuery.
Нужно было сделать выборку примерно из такого:
<div class="text text1 text2 text3 text4" nat="1" top_left="" style="top: ; left: -; width: ; height: ;" nature="11">
<div class="text text1 text2 text3" cupi="256" tipo="uno" tipo_z="2" style="width: ; height: ; top:  left: ;">
<div class="munya"></div></div></div>
<div class="text text1 text2 text3 text4" nat="1" top_left="" style="top: ; left: ; width: ; height: ;" nature="11">
<div class="text text1 text2 text3" cupi="256" tipo="nano" tipo_z="2" style="width: ; height: ; top: ; left: ;">
<div class="munya"></div></div></div>
<div class="text text1 text2 text3" nat="1" top_left="" style="top: ; left: -; width: ; height: ;" nature="11">
<div class="text text1 text2 text3 text4" cupi="256" tipo="uno" tipo_z="2" style="width: ; height: ; top:  left: ;">
<div class="munya"></div></div></div>
<div class="text text1 text2 text3" nat="1" top_left="" style="top: ; left: ; width: ; height: ;" nature="11">
<div class="text text1 text2 text3 text4" cupi="256" tipo="nano" tipo_z="2" style="width: ; height: ; top: ; left: ;">
<div class="munya"></div></div></div>

Выбрать было нужно классы: text text1 text2 text3 но без text4 и что бы tipo="uno".
Решение нашлось такое jQuery:
var elem=$('[tipo="uno"]').not('.text4');
    elem.each(function(){ 
       	console.log( $(this));
}

Всем помогавшим, большое спасибо!
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@Codebaker
Всё умею, всё могу!
К черту всё, некогда объяснять! ;-)

Array.prototype.diff = function(arr) {
	return this.filter(function(i) { return arr.indexOf(i) < 0; });
};

HTMLCollection.prototype.filter = Array.prototype.filter;
HTMLCollection.prototype.indexOf = Array.prototype.indexOf;
HTMLCollection.prototype.diff = Array.prototype.diff;

var elemsAllWithExtras = document.getElementsByClassName("text text1");
var elemsToSubstract = document.getElementsByClassName("text text1 text2");
var elemsIWant = elemsAllWithExtras.diff(elemsToSubstract);
Ответ написан
@dmitrygavrish
document.querySelectorAll('.text.text1:not(.text2)')
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы