Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Присвоение значение элементам с одинаковым классом (https://javascript.ru/forum/misc/31425-prisvoenie-znachenie-ehlementam-s-odinakovym-klassom.html)

Mesher 07.09.2012 06:25

Присвоение значение элементам с одинаковым классом
 
Здравствуйте, подскажите пожалуйста, как можно сделать присвоение элементу класса разные значения.

Например есть тэг span с одинаковым классом test

нужно по парно выводить данные.

for(var i=0;i<test.length;i++)  // считаем количество элементов с одинаковым классом
{
		objr=test[i]; // присваиваем переменной каждый элемент
		objr.innerHTML = 1; //выводим в каждый span единицу


теперь нужно добавить условие, чтобы первым 2-ум элементам вывел "1", второй паре +1 и т.д. каждым последующим 2-м элементам прибавлялась единица.

Итог должен быть таким:
<span class="test">1</span><span class="test">1</span><br>
<span class="test">2</span><span class="test">2</span><br>
<span class="test">3</span><span class="test">3</span> и т.д.


пытался добавить условие, если элемент 1 и 2-ой, то выводим 1, если элемент 3-ий и 4-ый то +1, и т.д., но код не работает.

Dmitriyff 07.09.2012 07:01

var f = function(n) {
  var i = 0, j = 0;
  for (; i < n; i++) {
    i%2 ? j : j++;
    console.log(j);
  }
};
f(10);
// вывод
//1
//1
//2
//2
..
//5
//5

Mesher 07.09.2012 07:42

пробовал ваше предложение, проверил как работает
var f = function(n) {
	  var i = 0, j = 0;
	  for (; i < n; i++) {
	    i%2 ? j : j++;
	    console.log(j);
	  }
	};
	alert(f(10));


при выводе пишет undefinet

А вообще можете на моем примере сделать?

function postwarid() {
	var test = document.getElementsByClassName("test"); // тег span с одинаковым классом

var number = document.getElementsByName("number")[0]; // input для ввода числа

for(var n=0;n<test.length;n++){ //считаем количество элементов span с одинаковым классом
		objr=test[n];
		objr.innerHTML = number.value; // выводим в каждый span значение инпута
		}
}

в моем варианте каждому тегу span с классом test добавляется значение введеный в input.
Одинаковых классов каждый раз бывает разным, т.к. страница генерируется динамически.
теперь сюда надо добавить условие.

ksa 07.09.2012 09:00

Цитата:

Сообщение от Mesher
нужно добавить условие, чтобы первым 2-ум элементам вывел "1", второй паре +1 и т.д. каждым последующим 2-м элементам прибавлялась единица

Оно?

<!DOCTYPE html>
<html>
<head>
<style type="text/css">
</style>
<script type="text/javascript">
function go() {
	var os=document.getElementsByTagName('span');
	var inc=1,typ=0,i;
	for (i=0; i<os.length; i++) {
		if (os[i].className!='test') {
			continue
		};
		os[i].innerHTML=inc;
		if (typ++==1) {
			inc++;
			typ=0;
		};
	};
};
</script>
</head>
<body>
<span class="test">...</span><span class="test">...</span><br>
<span class="test">...</span><span class="test">...</span><br>
<span class="test">...</span><span class="test">...</span><br>
<button onclick='go()'>Go</button>
</body>
</html>

Mesher 07.09.2012 09:37

Цитата:

Сообщение от ksa
ksa

Спасибо за помощь!

Получилось сделать! Все работает!

bes 07.09.2012 09:47

<span class="test"></span><span class="test"></span><br>
<span class="test"></span><span class="test"></span><br>
<span class="test"></span><span class="test"></span><br>
<span class="test"></span>

<script>
window.onload = function () {
	var spans = document.getElementsByClassName('test');
	var len = spans.length;
	var n = 1;
	for (var i = 0; i < len; i = i + 2) {
		spans[i].innerHTML = n;
		if (spans[i + 1]) {
			spans[i + 1].innerHTML = n;
			n++;
		}
	}
}
</script>

Dmitriyff 12.09.2012 17:11

Mesher,
а вы чего в alert'e получить ожидали???
функция ничего не возвращает, а служит только оберткой, чтобы можно было динамически задавать ограничение для цикла.


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