2010-11-15 31 views
5

Bunun gibi küçük bir DIV var:jquery Basit Matematik Yapıyor?

<div id="counter">2</div> 

JQuery'i çıkarmak ya da 1'e ekleyebilmek için jQery kullanmak istiyorum, sonuçta 3 veya 1 ...

jquery bunu yapmak için? bir dize bir int dönüştürebilir miyim?

+0

Ayrıca, 0 kat nasıl eklenir? Olumsuz sayıların görünmesini istemiyorum! :) – AnApprentice

+2

Math.max'ı (numaranız, 0) – Adam

cevap

4
$('#counter').text(function(i,txt) { return parseInt(txt, 10) + 1; }); 

Örnek: çıkarma içinhttp://jsfiddle.net/2uBMy/

Örnek:http://jsfiddle.net/2uBMy/1/

negatif bir çek eklemek için, bunu:

$('#counter').text(function(i,txt) { 
    var result = parseInt(txt, 10) - 1; 
    return (result > 0) ? result : 0; 
}); 
+0

txt, 10 ne yapar? – AnApprentice

+0

Temel 10 – Jimmy

+1

@AnApprentice içindeki txt içeriğini ayrıştırır - 'txt'' # coutner' öğesinin geçerli metin değerini temsil eder ve '10' ise değerin baz 10 sayısı olarak ayrıştırılmasını sağlar. Eğer bir '0' önde ise, bir sekizli olarak ayrıştırılacaktır. – user113716

1
$('#counter').html( +($('#counter').html()) + 1); 
+3

negatif sayısının olmayacağından emin olmak için kullanın. Bu, "1" + 1 'den "11" 'ile sonuçlanır. String + int, int dizisini bir dizeye zorlar, sonra birleştirir. –

+0

Evet ... düzeltildi. – AndreKR

1
var counter = $('#counter'); 
var value = parseInt(counter.html()); 
counter.html(value + 1); 
8
$('#counter').text(function(i, txt) { 
    return +txt + 1; 
}); 

Bu şekilde, #counter içerik bir tam dönüştürülür. Bu sayılar için harika çalışıyor, ancak eğer bir sebepten dolayı "foo123" gibi bir şey içeriğiyse, NaN olur.

Yani bunu ayrıştırmak için başka bir yol

$('#counter').text(function(i, txt) { 
    return parseInt(txt, 10) + 1; 
}); 

parseInt().parseInt() iki bağımsız değişkeni, bir değer ve bir sayı tabanı (baz sayısı) bekler kullanmaktır. Bu "foo123" üzerinde çağrılırsa, "123" geri dönecektir. Bunun yanlış bir davranış olduğunu söyleyebiliriz, bu yüzden hangi varlığa sahip olmak istediğinize karar vermeniz gerekir.

Örnek: http://www.jsfiddle.net/Mtvju/

Ref .: .text()

+0

+1 Vay, bir geri arama mümkün olduğunu bilmiyordum. .html() 'ile de mi? – AndreKR

+0

txt + 1, 21 – generalhenry

+0

@ generalhenry ile sonuçlanır - Dizeyi bir sayıya dönüştüren '+ txt' yapıyor. – user113716

0

Evet, bir int dönüştürmek. Bir tam sayıya dönüştürmek için parseInt kullanın. Daha sonra <div>'un içeriğini almak ve bu içeriği yeni değerle değiştirmek için jQuery'nin .html kullanın.

$("#counter").html(parseInt($("#counter").html(),10) + 1) 
$("#counter").html(parseInt($("#counter").html(),10) - 1) 

Try it here!

0

javascript gevşek yazıldığında. Sayıları ve sayıları içeren dizeleri, her ikisi için de en çok amaçlarla kullanıyor olabilirsiniz. Dikkatli olması gereken tek yer, hem ekleme hem de birleştirme olan +'dur. Bir şekilde anlaşmazlığa ihtiyacın var.

function subtract() 
{ 
    count = $('#counter').html(); 
    if(count > 0) 
    { 
    count--; 
    } 
    $('#counter').html(count) 
}