2015-10-29 2 views
1

я сделал функцию JavaScript для увеличения и уменьшения числа в кнопке, как, здесь функцияинкремента и декремента Javascript не работает

var val = 0; 
var negative = false; 
$('.i-t').click(function(){ 
val = val + ((negative) ? -1 : 1); 
negative = (negative) ? false : true; 
$("#myval").text(val); 
}); 

Эта функция отлично работает на первом щелчке, но нажав второй раз не удаляет значение, что-то не так с функцией? здесь кнопка

<button id="myvals" class="myvals"> 
<i class="myvals" id="i-t"></i> 
<span class="myvals" id="voteScore">123</span></button> 

я хочу, чтобы изменить 123 на 124, если понравилась и 122, если не нравится, и он не работает, я прошу прощения, я должен был подготовить вопрос лучше с самого начала

+1

Move 'вар вал = 0; var negative = false; 'вне обработчика – Tushar

+0

http://jsfiddle.net/arunpjohny/cug5r48y/1/? –

+0

ваш код будет делать значение '1' при первом щелчке, затем' 0' на втором клике, а затем чередуется между 1 и 0 на каждом клике ... это то, что вы ожидаете –

ответ

1

Из ваших комментариев и обновлений, что вы хотите сделать, это увеличить/уменьшить количество голосов, исходя из того, были ли вы уже нажали или нет.

В этом случае, вместо того, чтобы использовать переменную, вы можете сохранить состояние с помощью класса для поддержки нескольких кнопку голосов, если вам нужно, как

$('button.vote').click(function() { 
 
    var $btn = $(this).toggleClass('voted'); 
 
    $(this).find("span.score").text(function (i, val) { 
 
     return +val + ($btn.hasClass('voted') ? 1 : -1); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<button class="myvals vote"> <i class="myvals" id="i-t">here</i><span class="myvals score">123</span></button>

+0

http://jsfiddle.net/arunpjohny/cug5r48y/6/ –

0

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

var val = 0; 
var negative = false; 
$('.i-t').click(function() { 
    val = parseInt($("#voteScore").val()) + ((negative) ? -1 : 1); 
    negative = (negative) ? false : true; 
    $("#myval").text(val); 
}); 
+0

Я сделал ошибку здесь, код был именно таким, и он не работает в любом случае, никаких идей? я попробовал (документ) .ready и не работает – Mendark

+0

Код только ответы не понравились. Вы должны объяснить проблему OP и почему ваш код ее исправляет. – RobG

0

Вам нужны две кнопки, одна для вверх и одну вниз, или вы можете использовать одну кнопку и флажок вверх или вниз, но я думаю, что две кнопки проще.

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

Таким образом, кнопки и код может быть что-то вроде:

function vote(n) { 
 
    // Get the element to update 
 
    var el = document.getElementById('votes'); 
 

 
    // Convert the text content to Number, then add value 
 
    el.textContent = Number(el.textContent) + n; 
 
}
Votes: <span id="votes">123</span> 
 
<button onclick="vote(1)">up vote</button> 
 
<button onclick="vote(-1)">down vote</button>

Конечно, это всего лишь демо, адаптировать его, как вы хотите.

Смежные вопросы