Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.02.2017, 08:45
Профессор
Отправить личное сообщение для Роман Андреевич Посмотреть профиль Найти все сообщения от Роман Андреевич
 
Регистрация: 12.08.2016
Сообщений: 299

Ширина блоков из списка
Уважаемые коллеги, доброго времени суток.
Суть вопроса такова:

есть разметка -
<ul>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>


далее есть код JS:

/*объект значений ширины*/
var wid = {
one: {
value: 150
},
two: {
value: 100
},
three: {
value:50
},
four: {
value:400
}
}
/* список элементов*/
var elems = document.querySelectorAll('ul li');

/*Далее необходимо задать всем li из списка ширину - значения в объекте wid*/


Вопрос. Как это сделать в цикле???? Помгите плиз.
заранее спасибо

Последний раз редактировалось Роман Андреевич, 07.02.2017 в 08:50.
Ответить с цитированием
  #2 (permalink)  
Старый 07.02.2017, 08:50
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,205

Сообщение от Роман Андреевич
Как это сделать?
Пройтись циклом по первым ключам объекта, считать какой это по счету ключ... Менять значение ширины у соответствующего элемента списка...
Ответить с цитированием
  #3 (permalink)  
Старый 07.02.2017, 08:51
Профессор
Отправить личное сообщение для Роман Андреевич Посмотреть профиль Найти все сообщения от Роман Андреевич
 
Регистрация: 12.08.2016
Сообщений: 299

// for (var s in components){
			// 	var percent = Math.round((components[s].value*100)/components[s].parent);	
			// 	for (var i =0;i < spans.length;i++) {
			// 		spans[i].setAttribute('style', 'width:' + percent + '%');
			// 	}
			// }
Ответить с цитированием
  #4 (permalink)  
Старый 07.02.2017, 08:52
Профессор
Отправить личное сообщение для Роман Андреевич Посмотреть профиль Найти все сообщения от Роман Андреевич
 
Регистрация: 12.08.2016
Сообщений: 299

for (var s in components){
var percent = Math.round((components[s].value*100)/components[s].parent);	
for (var i =0;i < spans.length;i++) {
spans[i].setAttribute('style', 'width:' + percent + '%');
}
}
Ответить с цитированием
  #5 (permalink)  
Старый 07.02.2017, 08:52
Профессор
Отправить личное сообщение для Роман Андреевич Посмотреть профиль Найти все сообщения от Роман Андреевич
 
Регистрация: 12.08.2016
Сообщений: 299

вот так не работает((((
Ответить с цитированием
  #6 (permalink)  
Старый 07.02.2017, 08:54
Профессор
Отправить личное сообщение для Роман Андреевич Посмотреть профиль Найти все сообщения от Роман Андреевич
 
Регистрация: 12.08.2016
Сообщений: 299

вернее вот так правильно
for (var s in wid){
var percent = Math.round((wid[s].value*100)/40);	
for (var i =0;i < elems.length;i++) {
elems[i].setAttribute('style', 'width:' + percent + '%');
}
}
Ответить с цитированием
  #7 (permalink)  
Старый 07.02.2017, 08:54
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,205

Роман Андреевич, делай сразу полный пример. Огрызки никому не нужны.
Ответить с цитированием
  #8 (permalink)  
Старый 07.02.2017, 08:56
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,205

Сообщение от Роман Андреевич
вернее вот так правильно
Не совсем понятно чего ты тут добиваешься двойным циклом...
Ответить с цитированием
  #9 (permalink)  
Старый 07.02.2017, 08:57
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,205

Сообщение от Роман Андреевич
elems[i].setAttribute('style', 'width:' + percent + '%');
Накрутил...
elems[i].style.width=percent + '%';
Ответить с цитированием
  #10 (permalink)  
Старый 07.02.2017, 09:00
Профессор
Отправить личное сообщение для Роман Андреевич Посмотреть профиль Найти все сообщения от Роман Андреевич
 
Регистрация: 12.08.2016
Сообщений: 299

Полный пример:

/*объект значений ширины*/
var wid = {
one: {
   value: 150
},
two: {
   value: 100
},
three: {
   value:50
},
four: {
   value:400
}
}

var elems = document.querySelectorAll('ul li');
/*перебираем ключи у объекта ширин*/
for (var s in wid){
   var percent = Math.round(wid[s].value/100));	
}
/*добавляем каждому li свою ширину из объекта*/
   for (var i =0;i < elems.length;i++) {
      elems[i].setAttribute('style', 'width:' + percent + '%');
   }


В итоге он всем выдает 50%
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Суммарная ширина всех блоков MadChild jQuery 6 25.04.2014 15:16
Не работает скрипт отображения списка Konstantine Javascript под браузер 3 18.03.2013 06:00
Динамическое добавление выпадающего списка В IE stepennwolf Internet Explorer 3 04.11.2011 17:36
Помогите с калькулятором piton1175 AJAX и COMET 0 16.06.2011 14:29
Заполнить список значениями из динамически созданного выпадающего списка zhuzha Элементы интерфейса 0 17.08.2010 14:40