Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   как изменить класс элементов (https://javascript.ru/forum/misc/35505-kak-izmenit-klass-ehlementov.html)

danik.js 13.02.2013 10:09

Цитата:

Сообщение от ksa
И каким образом ты это собираешся делать без JQ?

Не jQuery единым.
Правда это примитивненький фикс для осла. И он вместо NodeList возвращает Array, так что работать придется так:

var elements = document.getElementsByClassName("xxx");
elements = Array.prototype.slice(elements);

for (var i = 0, ; i < elements.length; i++) {
    elements[i].className = "yyy";
}

dmitry111 13.02.2013 12:38

потестировал скорость моего варианта и варианта от рони

Использовал в нагрузке 2000 элементов.

Результаты (в ms) первый мой, второй - от рони:

Safari 157 163
Chrome 51 62
Opera 461 406
Firefox 197 139


Firefox после тестинга - умирает :lol:

Я думал что for будет слишком нагружать, но как видно, он даже чуть быстрее!

Vitaly Po 02.05.2016 10:08

Если так?
function modifyClass(className,func,param){
var objecs = document.getElementsByClassName(className);

for(i=0; i<objecs.length; i++){
	var id = objecs[i].id;

	if(func == 'renameClass'){
		document.getElementById(id).className = param;
		if( objecs.length > 0 ){
			modifyClass(className,func,param);
		}
	}
}
}

function modifyClass('xxx','renameClass','yyy')

aklis 02.05.2016 21:01

Блин, не ожидал и не знал что переменная модифицируется. Я почему-то думал что при назначении в переменную коллекции, сама коллекция составляется и назначается. А дальше просто хранятся ссылки на элементы.
Не ожидал что при обращении к переменной коллекция составляется заново.

Както это тупо...


Часовой пояс GMT +3, время: 16:21.