Javascript-форум (https://javascript.ru/forum/)
-   (X)HTML/CSS (https://javascript.ru/forum/xhtml-html-css/)
-   -   Проблемы с className (https://javascript.ru/forum/xhtml-html-css/40025-problemy-s-classname.html)

Tylmaril 22.07.2013 04:20

Проблемы с className
 
Доброго времени суток.
Имеется 4 блока div c разными id и разными class.
Задача:поменять у одного из блоков div один класс на другой.
Логику как это сделать я вроде понял,но вот как это выразить в коде непонимаю.
Гугление особых результатов не принесло,поэтому если можно поясните мне на примере,приведенном ниже, как в коде обратиться к определенному div по его классу(как записать,что хочу к div class=olo1 добавить class=olo4,а следом удалить из него class=olo1)(место выделено как комментарий).


<!DOCTYPE html>
<html>
	<head>
		<title>Заголовок страницы</title>
		<meta charset="utf-8">
		<style>
                #did1
                #did2
		#did3
                #did4
		#olo{color:white;}
		.olo1 {background:red; width: 100px; height: 100px;}
		.olo2 {background:green; width: 100px; height: 100px;}
		.olo3 {background:blue; width: 100px; height: 100px;}
		.olo4 {background:pink; width: 100px; height: 100px;}
		</style>
		<script>
		window.onload = function ()
{		                              
document.getElementById('did1').//className(' olo1 ') = '  olo4  '
document.getElementById('did1').//className(' olo1 ').replace = '  olo1  '
}
		</script>
	</head>
	<body>
	<center>
		<div id=did1 class=' olo1 '>one</div>
		<div id=did2 class=' olo2 '>two</div>
		<div id=did3 class=' olo3 '>three</div>
		<div id=did4 class=' olo4 '>four</div>
	</center>
	</body>
</html>

danik.js 22.07.2013 05:55

Цитата:

Сообщение от Tylmaril
Имеется 4 блока div с один и тем же id

И это уже неправильно. Исправь для начала этот косяк.

Tylmaril 22.07.2013 12:46

Исправил,но вопрос остался тот же.

mta88 22.07.2013 13:16

Цитата:

как в коде обратиться к определенному div по его классу(как записать,что хочу к div class=olo1 добавить class=olo4,а следом удалить из него class=olo1
$('.olo1').addClass('olo4').removeClass('olo1')

неужели прочитать любой один мануал по jquery это так сложно?

Tylmaril 22.07.2013 13:43

А без jquery это сделать можно?Прочитать не сложно,но мне тут надо обойтись пока без него.

ruslan_mart 22.07.2013 13:43

mta88, а кто Вам сказал, что автор использует jQuery? :)

mta88 22.07.2013 14:08

Цитата:

А без jquery это сделать можно?
ну начинается :)

в самой jquery методы 'addClass' и 'removeClass' реализованы через манипуляцию 'className' с помощью методов строк 'replace' и 'indexOf'
посмотрите сами, там больше 3 строчек
https://github.com/jquery/jquery/blo...ributes.js#L27

------------------------------------
P.S.
да и вы сами пытались replace использовать вроде, но не получилось
изучите нормально javascript и все получится
не мне же вас ветвлениям и работе со строками учить

ruslan_mart 22.07.2013 14:09

HTMLElement.prototype.addClass = function(a)
{
	this.className += ' '+a;
}
HTMLElement.prototype.removeClass = function(a)
{
	var b = new RegExp(' ?'+a);
	this.className = this.className.replace(b, '');
}


document.getElementById('did1').addClass('test');
document.getElementById('did2').removeClass('test');

danik.js 22.07.2013 14:20

document.getElementById('did1').classList.add('test');
document.getElementById('did1').classList.remove('test');


Для IE 8 подключаем костыль.

Tylmaril 22.07.2013 17:31

Появился новый вопрос, есть ли возможность удалить вообще ВСЕ классы,не перечисляя их.
Имею ввиду что то на подобии этого:

document.getElementById('did1').classList.remove('*');


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