Перебирать массив по клику

0

Я создаю презентацию. Существует элемент div, который сильно меняет размер шрифта. Есть две кнопки, чтобы увеличить цвет в массиве, а другой - уменьшить его.

HTML:

 <input type="button" id="up" value="change color up">
    <input type="button" id="down" value="change color down">

    <div id="myValue">
   VALUE 
    </div>

Jquery:

     fancyColors = {
            1: "#9c9e9f",
            2: "#848e6f",
            3: "#778861",
            4: "#7da75d",
            5: "#7fa433",
            6: "#97bf0d"
        };


   $(function () { 

        var i;
        var valuE = $('#myValue');
        var getSize = $('#myValue').css("font-size");
        var getColor = $('#myValue').css("color");
        var down = $('#down');
        var up = $('#up');



        valuE.css("color", fancyColors[1]);
        down.on("click",function() {
            valuE.css("color", fancyColors[i]); // do i--
        });  


        up.on("click", function() {
            valuE.css("color", fancyColors[i]); // do i++
        });  
    });

У меня был цикл for, но это не сработало для меня. Я думаю, это должно быть довольно легко для более опытного человека. Спасибо за ваше время.

  • 0
    fancyColors не является массивом.
  • 1
    $('#up') не будет работать, потому что up не id. То же самое касается и down .
Показать ещё 6 комментариев
Теги:

5 ответов

0
Лучший ответ

Сделайте свой html как

<input type="button" id="up" value="change color up">
<input type="button" id="down" value="change color down">
<div id="myValue">VALUE</div>

И ваши js:

var fancyColors = [
    "#9c9e9f",
    "#848e6f",
    "#778861",
    "#7da75d",
    "#7fa433",
    "#97bf0d"];


$(function () {

    var i = 0;
    var valuE = $('#myValue');
    var getSize = valuE.css("font-size");
    var getColor = valuE.css("color");
    var down = $('#down');
    var up = $('#up');



    valuE.css("color", fancyColors[1]);
    down.on("click", function () {
        valuE.css("color", fancyColors[i]);
        i++ // do i--
    });


    up.on("click", function () {
        valuE.css("color", fancyColors[i]);
        i++ // do i++
    });
});

Демо- версия: http://jsfiddle.net/jY24d/

  • 0
    Спасибо за уделенное время. работает действительно хорошо :)
  • 0
    Добро пожаловать. Не за что ;)
2

Попробуйте это

fancyColors = [
     "#9c9e9f",
     "#848e6f",
     "#778861",
     "#7da75d",
     "#7fa433",
     "#97bf0d"
 ];
 var index = 0;
 $("#up").click(function () {
     index++;

     var i = fancyColors.length % index;
     $("#myValue").css("background-color", fancyColors[i]);
 });
 $("#down").click(function () {
     index--;
     var i = fancyColors.length % index;

     $("#myValue").css("background-color", fancyColors[i]);
 });

демонстрация

0
 fancyColors = {
                1: "#9c9e9f",
                2: "#848e6f",
                3: "#778861",
                4: "#7da75d",
                5: "#7fa433",
                6: "#97bf0d"
            };

   $(function () { 

        window.colorIndex=1;
        var valuE = $('#myValue');
        var getSize = $('#myValue').css("font-size");
        var getColor = $('#myValue').css("color");
        var down = $('#down');
        var up = $('#up');
        valuE.css("color", fancyColors[1]);
        down.on("click",function() {

        if(colorIndex<1){colorIndex=6;}
            valuE.css("color", fancyColors[--colorIndex]); // do i--
        });  


        up.on("click", function() {

       if(colorIndex >6){colorIndex=1;}            
            valuE.css("color", fancyColors[colorIndex++]); // do i++
        });  
    });

Попробуй это :)

0

Вы студент, да? Хорошо, я не буду делать домашнее задание для вас, но я дам вам следующие советы:

  1. Кнопки нуждаются в идентификаторах
  2. Итератору (i) требуется значение до того, как функция сначала выполнит
  3. Вы не можете определить события щелчка для вызова функции внутри самой функции

Но я уверен, что в ваших лекционных материалах все равно...

  • 0
    спасибо за советы.
0
 $('#down').click( function(){ i++; });

Вам нужно добавить атрибут id к вашему вводу вниз:

 <input type='button' id='down'>

Этот jQuery будет корректно соответствовать #down

  • 0
    Я не добавил это здесь, но в моем исходном коде это правильно. Извини за ошибку.
  • 0
    Не могли бы вы вставить полный код. Возможно, я что-то пропустил. Спасибо
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню