Javascript.RU

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

Скрипт уменьшения параметра left
Есть такая конструкция
<a href="#" class="first"></a>
<a href="#" class="second"></a>
<ul>
<li></li>
<li></li>
...
</ul>


Нужно написать скрипт, который, после клика по a.second, если количество li>8 и <=16 добавлял li стиль уменьшал left для li на 100%. Если li>16 и <=24 - ещё на 100%.
То есть в самом начале имеется li{left: 0;}. Если элементов i 10(например) и мы кликаем по .second из left должно вычитаться 100%.

При клике на prev - left увеличивается на 100%, пока не достигнет 0.

У самого навыки в js чуть больше нуля. Прошу помочь
Ответить с цитированием
  #2 (permalink)  
Старый 17.06.2015, 12:32
Аватар для Sigizmund2012
Профессор
Отправить личное сообщение для Sigizmund2012 Посмотреть профиль Найти все сообщения от Sigizmund2012
 
Регистрация: 16.07.2014
Сообщений: 267

ТЗ крайне странное, но я попробовал сделать:
<button class="first">First</button>
<button class="second">Second</button>
<ul id="list">
    <li>item_1</li>
    <li>item_2</li>
    <li>item_3</li>
    <li>item_4</li>
    <li>item_5</li>
    <li>item_6</li>
    <li>item_7</li>
    <li>item_8</li>
    <li>item_9</li>
</ul>

<script>

var list = document.getElementById('list');
var first = document.querySelectorAll('.first')[0];
var second = document.querySelectorAll('.second')[0];
var childrens;
var max;
var oldValue;

second.onclick = function (e) {
  if( list.children.length > 8 && list.children.length <= 16){
    childrens = list.children;
    max = childrens.length;
    for (var i = 0; i < max; i++) {
        oldValue = parseInt(childrens[i].style.marginLeft);
        if(!oldValue){
            oldValue = 0;
        }
        childrens[i].style.marginLeft = oldValue - 100 + '%';
    }
  }
  else if( list.children.length > 16 && list.children.length < 24){
    childrens = list.children;
    max = childrens.length;
    for (var j = 0; j < max; j++) {
        oldValue = parseInt(childrens[j].style.marginLeft);
        if(!oldValue){
            oldValue = 0;
        }
        childrens[j].style.marginLeft = oldValue - 200 + '%';
    }
  }  
};

first.onclick = function (e) {
    childrens = list.children;
    max = childrens.length;
    for (var i = 0; i < max; i++) {
        oldValue = parseInt(childrens[i].style.marginLeft);
        if(!oldValue || oldValue === 0){
            oldValue = 0;
            return;
        }
        else{
        childrens[i].style.marginLeft = oldValue + 100 + '%';
        }
    }  
};

</script>

Правда я margin-left использовал, а не left. Если именно left надо, замените в коде все marginLeft на left.

Последний раз редактировалось Sigizmund2012, 17.06.2015 в 12:43.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скрипт отслеживающий подгрузку контента на страницу. psqs Events/DOM/Window 2 23.01.2012 19:29
помогите доработать скрипт Medvedoc Javascript под браузер 0 18.10.2011 15:09
Многомерный массив в json Л_Денис Общие вопросы Javascript 1 21.04.2010 20:43
Получится ли колонку посередине? micscr (X)HTML/CSS 13 17.02.2010 00:23
Помогите исправить скрипт по поиску в базе данных dok_sj2 Internet Explorer 2 29.06.2009 19:04