2010-11-15 39 views
5

Tôi có một chút DIV như thế này:jquery Làm Toán đơn giản?

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

Tôi muốn sử dụng jQuery để hoặc trừ hoặc thêm bằng cách cho phép nói 1, kết quả là 3 hoặc 1 ...

là có một cách trong jquery để làm điều này? chuyển đổi một chuỗi thành một int có thể?

+0

Ngoài ra, cách thêm sàn 0? Tôi không muốn số âm hiển thị! :) – AnApprentice

+2

sử dụng Math.max (số của bạn, 0) để đảm bảo rằng sẽ không có số âm – Adam

Trả lời

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

Ví dụ bổ sung:http://jsfiddle.net/2uBMy/

Ví dụ cho phép trừ:http://jsfiddle.net/2uBMy/1/

Để thêm một tấm séc cho tiêu cực, bạn có thể làm điều này:

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

txt, 10 làm gì? – AnApprentice

+0

Nó phân tích nội dung của txt trong cơ sở 10 – Jimmy

+1

@AnApprentice - 'txt' đại diện cho giá trị văn bản hiện tại của' # coutner' và '10' đảm bảo giá trị được phân tích cú pháp dưới dạng số cơ sở 10. Nếu có '0' hàng đầu, nó sẽ được phân tích cú pháp dưới dạng bát phân. – user113716

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

Điều này sẽ dẫn đến '" 11 "', từ '" 1 "+ 1'. Bởi vì string + int coerces int vào một chuỗi, sau đó nối nó lại. –

+0

Yep ... đã sửa chữa. – AndreKR

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

Bằng cách đó, nội dung từ #counter được chuyển đổi thành một số nguyên. Điều này làm việc tuyệt vời cho các con số, nhưng nếu vì một lý do nào đó giống như "foo123" là nội dung, nó sẽ trở thành NaN.

Vì vậy, một cách khác để phân tích nó là sử dụng .parseInt()

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

parseInt() hy vọng hai đối số, một giá trị và một cơ số (số cơ sở). Nếu điều này được gọi trên "foo123", nó sẽ trả về "123". Người ta có thể nói rằng đây là một hành vi sai, vì vậy bạn cần phải quyết định biến thể nào bạn muốn có.

Ví dụ: http://www.jsfiddle.net/Mtvju/

Ref .: .text()

+0

+1 Wow, không biết có thể gọi lại. Có phải nó có '.html()' không? – AndreKR

+0

txt + 1 sẽ dẫn đến 21 – generalhenry

+0

@generalhenry - Anh ta đang thực hiện '+ txt' để chuyển đổi chuỗi thành một số. – user113716

0

Vâng, chuyển nó sang một int. Sử dụng parseInt để chuyển đổi thành số nguyên. Sau đó, sử dụng số .html của jQuery để lấy nội dung của <div> và thay thế các nội dung đó bằng giá trị mới.

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

Try it here!

0

javascript được loại lỏng lẻo. Bạn có thể sử dụng các chuỗi có chứa các số và số như thể chúng ở cả hai nơi cho hầu hết các mục đích. Một nơi phải cẩn thận là +, cả hai đều được thêm và ghép lại. Bạn cần phải định hướng bằng cách nào đó.

function subtract() 
{ 
    count = $('#counter').html(); 
    if(count > 0) 
    { 
    count--; 
    } 
    $('#counter').html(count) 
} 
Các vấn đề liên quan