使用Button选择下一个div并更改值

时间:2015-11-10 11:31:12

标签: javascript jquery html css

我有4个div元素,每个元素都有自己的值,例如0。我有一个带加号和减号的按钮,可以更改每个框中的值。我也有一个设置下一个按钮,所以你可以对下一个框做同样的事情。

我面临的问题是如何选择下一个div并使用相同的加号和减号按钮更改值,然后选择下一个div并执行相同操作,直到您# 39;最后。然后它必须返回到第一个div。这是我的代码:

<div class="code_div">
    <div class="code_area">
        <p id="number1">00</p>
    </div>
    <div class="code_area2">
        <p id="number2">00</p>
    </div>
    <div class="code_area3">
        <p id="number3">00</p>
    </div>
    <div class="code_area4">
        <p id="number4">00</p>
    </div>
var value = 0;
var plus = false;
var minus = false;

$(document).ready(function() {
    $('#set_next').click(function() {
    });

    $('#minus').click(function() {
        minus = false;
        plus = true;
        if (plus == true) {
            value -= 5;
        }
        displayValue()
    });

    $('#plus').click(function() {
        minus = true;
        plus = false;
        if (minus == true) {
            value += 5;
        }
        displayValue() 
    });
});

function displayValue() {
    document.getElementById("number1").innerHTML = value;
}

任何人都可以帮助我吗?

3 个答案:

答案 0 :(得分:5)

保持简单。您有一个div列表,因此请改用list。即使您想保留原始标记,也应该知道如何实现它。

&#13;
&#13;
var $items = $('ul li'),
    qtItems = $items.length,
    activeItem = 0;

$('#setnext').click(function () {
  $items.removeClass('active').eq(++activeItem % qtItems).addClass('active');
});
                   
$('#plus, #minus').click(function () {
  var currvalue = $items.eq(activeItem % qtItems).text();
  this.id === 'plus' ? currvalue++ : currvalue--;
  $items.eq(activeItem % qtItems).text(currvalue);
});
&#13;
ul {
  list-style: none;
}

ul li {
  display: inline-block;
  margin: 0 1em;
  padding: 1em;
  background-color: green;
  opacity: .5;
}

li.active {
  opacity: 1;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
  <li class="active">0</li>
  <li>0</li>
  <li>0</li>
  <li>0</li>
</ul>

<button id="setnext">set next</button>
<button id="plus">plus</button>
<button id="minus">minus</button>
&#13;
&#13;
&#13;

但是,如果你无法简化你的标记,那么使用你原来的html就是另一个simple solution 如您所见,您不需要所有这些类和ID。

答案 1 :(得分:3)

var value = 0;
var plus = false;
var minus = false;
var index=1;
$( document ).ready(function() {

$('#set_next').click(function() {
index++;
//update
$("#number"+index).css("color","blue");
if(index==5){
index=1;
}
});

 $('#minus').click(function() {
       minus = false;
       plus = true;
        if (plus == true){
        value -= 5;
    }
displayValue()
    });

 $('#plus').click(function() {
       minus = true;
       plus = false;
    if (minus == true){
         value += 5;
    }
displayValue() 
    });
});

function displayValue(){
        document.getElementById("number"+index).innerHTML = value;
}

答案 2 :(得分:2)

虽然您的代码需要大量抛光(如果您愿意,我可以为您提供更清洁的方法) https://jsfiddle.net/cbw4zc55/ 沿着这些方向的东西? HTML代码:

<div class="code_div">
<div class="code_area">
<p id="number1">00</p>
</div>
<div class="code_area2">
<p id="number2">00</p>
</div>
<div class="code_area3">
<p id="number3">00</p>
</div>
<div class="code_area4">
<p id="number4">00</p>
</div>
    <button id="set_next">set next</button>
    <button id="minus">minus</button>
    <button id="plus">plus</button>

的javascript:

var current = 1;
    var max = 4;

    var value = 0;
    var plus = false;
    var minus = false;
    $( document ).ready(function() {

    $('#set_next').click(function() {
        if( current < max )
        {
            current+=1;
        }
        else
        {
            current = 1;
        }
     value = parseInt($("#number"+current).text());
    });

     $('#minus').click(function() {

           minus = false;
           plus = true;
            if (plus == true){
            value -= 5;
        }

    displayValue()

        });


     $('#plus').click(function() {

           minus = true;
           plus = false;
        if (minus == true){
             value += 5;
        }
    displayValue() 

        });

    });


    function displayValue(){

            document.getElementById("number"+current).innerHTML = value;

    }

编辑: 请注意,每次将焦点更改为新焦点时,您都​​需要重新计算当前元素值(除此之外,所选答案也是完美的)