2010-11-15 21 views
5

tengo un poco DIV así:jquery Hacer matemáticas simples?

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

Me gustaría utilizar jQuery para cualquiera restar o sumar por let decir 1, resultando en 3 o 1 ...

hay una manera en jquery para hacer esto? convertir una cadena a un int tal vez?

+0

Además, ¿cómo agregar un piso de 0? ¡No quiero que aparezcan números negativos! :) – AnApprentice

+2

use Math.max (su número, 0) para asegurarse de que no habrá números negativos – Adam

Respuesta

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

Ejemplo para la adición:http://jsfiddle.net/2uBMy/

Ejemplo para la resta:http://jsfiddle.net/2uBMy/1/

Para añadir un cheque para el negativo, que podría hacer esto:

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

¿qué hace el txt, 10? – AnApprentice

+0

Analiza el contenido de txt en la base 10 – Jimmy

+1

@AnApprentice - El 'txt' representa el valor de texto actual de' # coutner', y '10' asegura que el valor se analiza como un número de base 10. Si hay un '0' inicial, se analizará como un octal. – user113716

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

Esto resultaría en '" 11 "', de '" 1 "+ 1'. Debido a que string + int coacciona el int en una cadena, luego lo concatena. –

+0

Sí ... corregido. – AndreKR

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

De esta manera, el contenido de #counter se convierten en un número entero. Esto funciona muy bien para los números, pero si por algún motivo algo como "foo123" es el contenido, se convertiría en NaN.

Así pues, otra manera de analizar que es usar .parseInt()

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

parseInt() espera dos argumentos, un valor y una base (número de base). Si esto se invoca en "foo123", devolverá "123". Se podría decir que este es un comportamiento incorrecto, por lo que debe decidir qué variante desea tener.

Ejemplo: http://www.jsfiddle.net/Mtvju/

Ref .: .text()

+0

+1 Guau, no sabía que una devolución de llamada es posible. ¿Es con '.html()', también? – AndreKR

+0

txt + 1 daría como resultado 21 – generalhenry

+0

@generalhenry - Está haciendo '+ txt', que convierte la cadena en un número. – user113716

0

Sí, convertirlo en un int. Use parseInt para convertirlo a un número entero. A continuación, utilice el .html de jQuery para obtener los contenidos del <div> y reemplazar esos contenidos con el nuevo valor.

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

Try it here!

0

Javascript se escribe sin apretar. Puede usar cadenas que contienen números y números como si fueran ambos para la mayoría de los propósitos. El único lugar para tener cuidado es el +, que es tanto agregar como concatenar. Necesitas desambiguar de alguna manera.

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