Asked Apr 19th, 2:11 AM 90 0 3
  • 90 0 3
+1

Hỏi về xử lý stt danh sách và Object Javascript

Share
  • 90 0 3

Hiện em đang vướng vụ thêm dòng khi click + anh chị em ạ, các thứ khác thì ok rồi nhưng tới phần STT thì em không biết xử lý thế nào cho hay, hiện e đang cho + lên nên dù đã xóa các row củ đi thì số vẫn tăng thành ra số không theo thứ tự, có cách nào cập nhật lại cho chuyên nghiệp hơn không anh chị em ơi.

Để tránh tạo nhiều bài viết em sửa trong đây luôn.

hiện e đang dùng function này

$.fn.serializeObject = function () {
    var o = {};
    var a = this.serializeArray();
    $.each(a, function () {
        if (o[this.name] !== undefined) {
            if (!o[this.name].push) {
                o[this.name] = [o[this.name]];
            }      
            o[this.name].push(this.value || '');
        } else {
            o[this.name] = this.value || '';
        }
    });
    return o;
};

nhưng vướng 1 lỗi là khi dữ liệu đầu tiên mà trống thì nó không lưu vào chỉ lưu vào từ lúc dữ liệu không trống thôi, mong anh em giúp

3 ANSWERS


Answered Apr 19th, 2:26 AM
Accepted
+3

@zingler Trong danh sách bạn sẽ có 2 sự kiện làm thay đổi STT:
Khi add: thì bạn chỉ cần lấy STT cuối cùng rồi + 1
Khi delete: Bạn phải duyệt qua toàn bộ row để đánh số lại là đc nha.
Chúc bạn thành công.

Share
Z @zingler
Apr 19th, 7:22 AM

Anh có thể giúp em thêm phần push 1 null vào array không a? nếu hàng đầu có dữ liệu thì mới push được, còn hàng đầu cũng null thì mãng mất dữ liệu null ở đầu và các dữ liệu null nối tiếp phía sau, kết quả e muốn lấy hết từ đầu tới cuối dù có null ở dữ liệu đầu tiên ấy a

+1
| Reply
Share
Z @zingler
Apr 19th, 8:31 AM

nếu được mong anh giúp đỡ câu hỏi 2 dùm e luôn nha

+1
| Reply
Share
Answered Apr 19th, 2:55 AM
+1

Bạn thử dùng cách này xem

  • Khi tạo ra các dòng mới bạn không phân biệt bằng id tự tăng nữa mà tạo ra các mã unique có các dòng (cái này thì có thể dùng thư viện của js hoặc bạn có thể tự tạo một hàm riêng để tạo ra). khi đó số thứ tự bạn cần thì bạn dùng luôn (index + 1) của mảng đó để hiển thị
  • hoặc bạn có thể dùng cách của @benkyou ở trên
Share
Z @zingler
Apr 19th, 8:31 AM

nếu được mong anh giúp đỡ câu hỏi 2 dùm e luôn nha

+1
| Reply
Share
Answered Apr 19th, 2:58 AM
+1

Mình có cách xử lý thế này:

Khi danh sách của bạn đang trống, bạn hãy đặt biến số: biến previousIndex = 0; currentIndex = 1

Khi bắt đầu bấm + để tăng số dòng, bạn đặt giá trị STT của dòng bằng currentIndex += 1; Đồng thời tăng previousIndex lên 1

Khi bấm - dòng, bạn gán currentIndex = previousIndex; sau đó trừ previousIndex đi 1 đơn vị

Bằng cách này STT của bạn sẽ được tăng giảm luôn đúng

Chúc bạn thành công

Share
Z @zingler
Apr 19th, 8:22 AM

với cách này thì khi mình xóa ở giữa nó lại sai bác ạ 😦 e dùng cách cập nhật lại mỗi lần click add hoặc remove luôn r bác

+1
| Reply
Share
Z @zingler
Apr 19th, 8:31 AM

nếu được mong anh giúp đỡ câu hỏi 2 dùm e luôn nha

+1
| Reply
Share