Các lượt nộp
    Danh sách bài
    Trang chủ
    Báo lỗi
    solution
    Đăng nhập
    Đăng nhập

    Đề bài: [Thiết kế Web] Dừng lan truyền sự kiện

    📖Cần ôn lý thuyết? Đọc bài giảng Buổi 12: JavaScript cho Website (1): window, document, sự kiện, DOM — khóa Thiết kế Web

    Mô phỏng việc gọi stopPropagation() trong giai đoạn BUBBLE của sự kiện.

    Cho cây DOM, một số nút có gắn hàm xử lý sự kiện (event listener) ở giai đoạn bubble (có thể gọi stopPropagation hoặc không), và một nút target.

    Sự kiện được kích hoạt tại target và lan truyền dần lên tới gốc; tại mỗi nút có listener, listener đó sẽ được thực thi; nếu listener đó gọi stopPropagation, sự kiện dừng lan truyền ngay sau đó (các nút tổ tiên xa hơn sẽ không nhận được sự kiện nữa, kể cả khi chúng có listener).

    • Định dạng đầu vào:

      Dòng đầu là số nguyên n (số nút trong cây, 1 ≤ n ≤ 200). n dòng tiếp theo, dòng thứ i (1 ≤ i ≤ n) mô tả nút có chỉ số i theo cú pháp: "parentIdx tagName classes attrs"

      • parentIdx: chỉ số nút cha (0 nếu là nút gốc; nút gốc luôn có chỉ số 1). Nút cha luôn có chỉ số nhỏ hơn nút con (dữ liệu được cho theo thứ tự tạo/duyệt, đúng thứ tự các nút con được thêm vào — coi đây là thứ tự anh em trong cây).
      • tagName: tên thẻ HTML (chữ thường, không khoảng trắng).
      • classes: danh sách class cách nhau bởi dấu phẩy (không khoảng trắng), hoặc "-" nếu không có class.
      • attrs: danh sách cặp "tên=giá_trị" cách nhau bởi dấu chấm phẩy (không khoảng trắng), hoặc "-" nếu không có thuộc tính nào (giá trị không chứa dấu chấm phẩy hay khoảng trắng). Dòng tiếp theo: số nguyên k — số nút có gắn listener (0 ≤ k ≤ n). k dòng tiếp theo, mỗi dòng là "idx STOP" hoặc "idx NONE", trong đó idx là chỉ số nút có listener, STOP nghĩa là listener đó gọi stopPropagation, NONE nghĩa là không gọi. Dòng cuối: chỉ số nút target.
    • Ràng buộc đầu vào:

      1 ≤ n ≤ 200. Mỗi nút có tối đa một listener.

    • Định dạng đầu ra:

      In ra danh sách chỉ số các nút mà listener của chúng ĐƯỢC THỰC THI, theo đúng thứ tự thực thi (từ target lan lên gốc), cách nhau bởi dấu phẩy. Nếu không có listener nào được thực thi, in ra "Không có".

    Ví dụ:

    Đầu vào:

    4
    0 div - -
    1 p - -
    1 span - -
    2 b - -
    3
    4 NONE
    2 STOP
    1 NONE
    4
    

    Đầu ra:

    4,2

    Chủ đề

    🌐 Thiết kế WebThiết kế WebThiết kế Web: DOM — Truy vấn & Thao tácTất cả môn học

    Đang tải editor...