Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.09.2012, 06:25
Новичок на форуме
Отправить личное сообщение для Mesher Посмотреть профиль Найти все сообщения от Mesher
 
Регистрация: 07.09.2012
Сообщений: 3

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

Например есть тэг 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, и т.д., но код не работает.
Ответить с цитированием
  #2 (permalink)  
Старый 07.09.2012, 07:01
Профессор
Отправить личное сообщение для Dmitriyff Посмотреть профиль Найти все сообщения от Dmitriyff
 
Регистрация: 22.07.2012
Сообщений: 164

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
Ответить с цитированием
  #3 (permalink)  
Старый 07.09.2012, 07:42
Новичок на форуме
Отправить личное сообщение для Mesher Посмотреть профиль Найти все сообщения от Mesher
 
Регистрация: 07.09.2012
Сообщений: 3

пробовал ваше предложение, проверил как работает
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.
Одинаковых классов каждый раз бывает разным, т.к. страница генерируется динамически.
теперь сюда надо добавить условие.
Ответить с цитированием
  #4 (permalink)  
Старый 07.09.2012, 09:00
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,123

Сообщение от 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>
Ответить с цитированием
  #5 (permalink)  
Старый 07.09.2012, 09:37
Новичок на форуме
Отправить личное сообщение для Mesher Посмотреть профиль Найти все сообщения от Mesher
 
Регистрация: 07.09.2012
Сообщений: 3

Сообщение от ksa
ksa
Спасибо за помощь!

Получилось сделать! Все работает!
Ответить с цитированием
  #6 (permalink)  
Старый 07.09.2012, 09:47
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

<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>
Ответить с цитированием
  #7 (permalink)  
Старый 12.09.2012, 17:11
Профессор
Отправить личное сообщение для Dmitriyff Посмотреть профиль Найти все сообщения от Dmitriyff
 
Регистрация: 22.07.2012
Сообщений: 164

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
достать value с полей с одинаковым классом zloctb Общие вопросы Javascript 3 09.01.2012 19:55
В contains() не подставляется значение переменной Heger jQuery 2 11.12.2011 20:26
Значение переменной salex009 jQuery 1 05.12.2011 16:55
Неправильное присвоение элементам событий maxagg Events/DOM/Window 2 19.09.2010 12:58