Giới thiệu về The Anchors Collection trong JavaScript

JavaScript Examples | by Học Javascript

Trong phát triển web, việc tương tác và thao tác với các phần tử HTML thông qua JavaScript là một kỹ năng quan trọng giúp tạo ra các ứng dụng web động và tương tác tốt với người dùng. Một trong những phần tử phổ biến trong HTML là thẻ <a>, dùng để tạo các liên kết. Để dễ dàng làm việc với các thẻ này, JavaScript cung cấp một công cụ gọi là The Anchors Collection.

The Anchors Collection là một đối tượng trong JavaScript cho phép bạn truy xuất tất cả các thẻ <a> có trong trang web, từ đó dễ dàng thao tác với các thuộc tính của chúng như href, textContent, hay thậm chí thay đổi hành vi mặc định của các liên kết. Trong bài tập này, chúng ta sẽ tìm hiểu cách sử dụng The Anchors Collection, cách truy cập và thao tác với các thẻ <a> trong một trang web, cũng như những ứng dụng thực tế của nó trong lập trình web.

Mục tiêu của bài tập này không chỉ là hiểu rõ về The Anchors Collection, mà còn là nâng cao khả năng sử dụng JavaScript để tương tác hiệu quả với các phần tử trong trang web, từ đó phát triển các tính năng web thú vị và dễ sử dụng.

Yêu cầu bài tập cách sử dụng document.anchors bằng JavaScript

Lấy tất cả các thẻ <a> trong trang web bằng cách sử dụng document.anchors:

  • document.anchors là một thuộc tính trong JavaScript của đối tượng document giúp bạn truy xuất tất cả các thẻ <a> có trong trang web. Khi sử dụng document.anchors, bạn sẽ nhận được một HTMLCollection chứa tất cả các thẻ <a> có trong trang. Điều này cho phép bạn dễ dàng thao tác với các liên kết mà không cần phải sử dụng vòng lặp hoặc truy cập từng thẻ <a> một cách thủ công.

  • Ví dụ, để lấy tất cả các thẻ <a>, bạn chỉ cần gọi document.anchors trong JavaScript và lưu kết quả vào một biến.

let allAnchors = document.anchors;
console.log(allAnchors);

Hiển thị số lượng các thẻ <a> có trong trang:

Sau khi truy xuất tất cả các thẻ <a>, bạn có thể dễ dàng tính toán số lượng các thẻ này bằng cách sử dụng thuộc tính length của HTMLCollection. Đây là cách để kiểm tra có bao nhiêu thẻ <a> trên trang. Bạn có thể hiển thị kết quả này ra console hoặc trực tiếp trên trang web, chẳng hạn trong một thẻ <p> hoặc <div>.

Ví dụ:

let numberOfAnchors = document.anchors.length;
console.log('Số lượng thẻ <a> trên trang: ', numberOfAnchors);

Hoặc bạn có thể hiển thị số lượng này trên trang web:

document.getElementById('anchorCount').innerText = `Số lượng thẻ <a> trên trang: ${numberOfAnchors}`;

Thêm một thẻ <p> trong HTML để hiển thị kết quả:

<p id="anchorCount"></p>

Thực hiện thao tác với các thẻ <a> như thay đổi thuộc tính href, thay đổi văn bản của liên kết, hoặc lọc các thẻ <a> theo điều kiện nhất định:

Bạn có thể thực hiện nhiều thao tác khác nhau với các thẻ <a> trong Anchors Collection. Dưới đây là một số thao tác phổ biến:

  • Thay đổi thuộc tính href: Để thay đổi thuộc tính href của một liên kết, bạn có thể truy cập từng thẻ <a> trong HTMLCollection và thay đổi giá trị của href.

for (let anchor of document.anchors) {
    anchor.href = 'https://www.newurl.com';  // Thay đổi tất cả các liên kết thành một URL mới
}

Thay đổi văn bản của liên kết: Bạn có thể thay đổi văn bản hiển thị của liên kết thông qua thuộc tính textContent hoặc innerHTML.

for (let anchor of document.anchors) {
    anchor.textContent = 'Liên kết mới';  // Thay đổi văn bản của tất cả các liên kết
}

Lọc các thẻ <a> theo điều kiện nhất định: Bạn có thể lọc các thẻ <a> dựa trên thuộc tính href, ví dụ như lọc tất cả các liên kết có chứa một chuỗi cụ thể trong URL. Điều này có thể hữu ích nếu bạn chỉ muốn thao tác với các liên kết có một đặc điểm chung.

Ví dụ: Lọc tất cả các thẻ <a> có chứa từ "example" trong href:

for (let anchor of document.anchors) {
    if (anchor.href.includes('example')) {
        console.log('Liên kết có chứa "example":', anchor);
        // Bạn có thể thay đổi thuộc tính hoặc văn bản của liên kết ở đây
    }
}

Thêm sự kiện vào các thẻ <a>: Bạn cũng có thể thêm các sự kiện vào các thẻ <a>, chẳng hạn như sự kiện click. Ví dụ, bạn có thể thay đổi hành vi mặc định khi người dùng nhấp vào liên kết.

for (let anchor of document.anchors) {
    anchor.addEventListener('click', function (event) {
        event.preventDefault();  // Ngăn chặn hành vi mặc định của liên kết
        alert('Liên kết đã bị ngừng hoạt động.');
    });
}

Thông qua các yêu cầu bài tập này, bạn sẽ có thể hiểu rõ cách làm việc với The Anchors Collection trong JavaScript, bao gồm cách truy xuất tất cả các thẻ <a>, thao tác với chúng và thực hiện các thay đổi trên các thẻ này. Bằng cách thực hành các thao tác này, bạn sẽ cải thiện kỹ năng lập trình JavaScript và trở nên thành thạo hơn trong việc quản lý các phần tử DOM trong trang web.

Các bước hướng dẫn cách sử dụng document.anchors bằng JavaScript

Lấy tất cả các thẻ <a> trong trang web:

Để lấy tất cả các thẻ <a> trong trang web, bạn có thể sử dụng thuộc tính document.anchors. Đây là một HTMLCollection chứa tất cả các thẻ <a> có trong trang hiện tại. Đặc biệt, document.anchors giúp bạn dễ dàng truy cập vào các thẻ liên kết mà không cần phải lặp lại qua toàn bộ trang để tìm từng thẻ <a>.

Cách sử dụng:

Ví dụ:

  • Khi gọi document.anchors, JavaScript sẽ trả về một tập hợp tất cả các thẻ <a> có trong trang, bao gồm cả thẻ <a> có thuộc tính name hoặc id.

  • Đây là cách rất hiệu quả để lấy tất cả các liên kết mà không cần phải sử dụng querySelectorAll hoặc vòng lặp phức tạp.

let allAnchors = document.anchors;
console.log(allAnchors);

Kết quả trả về sẽ là một HTMLCollection chứa tất cả các thẻ <a> trong trang. Bạn có thể kiểm tra số lượng thẻ liên kết bằng cách truy cập thuộc tính .length của HTMLCollection này.

console.log('Số lượng thẻ <a> trên trang: ', document.anchors.length);

Thao tác với các thẻ <a> trong Anchors Collection:

Sau khi lấy được tất cả các thẻ <a>, bạn có thể truy xuất và thao tác với từng thẻ liên kết trong Anchors Collection. Dưới đây là một số thao tác cơ bản bạn có thể thực hiện:

  • Thay đổi thuộc tính href: Bạn có thể thay đổi thuộc tính href của mỗi thẻ <a> để cập nhật liên kết đích của chúng. Ví dụ, thay đổi tất cả các liên kết thành một URL chung:

for (let anchor of document.anchors) {
    anchor.href = 'https://www.newurl.com';  // Thay đổi href của tất cả các thẻ <a>
}

Thay đổi văn bản hiển thị của thẻ <a>: Thay đổi văn bản hoặc nội dung hiển thị của mỗi thẻ liên kết. Bạn có thể sử dụng thuộc tính textContent hoặc innerHTML để làm điều này.

for (let anchor of document.anchors) {
    anchor.textContent = 'Liên kết mới';  // Thay đổi văn bản của tất cả các thẻ <a>
}

Lọc và thao tác với thẻ <a> theo điều kiện: Bạn có thể lọc các thẻ <a> theo điều kiện cụ thể, ví dụ như chỉ thay đổi các liên kết có chứa một từ khóa trong href hoặc textContent.

for (let anchor of document.anchors) {
    if (anchor.href.includes('example')) {
        console.log('Liên kết có chứa "example":', anchor);
        // Có thể thay đổi thuộc tính hoặc văn bản ở đây
    }
}

Thêm sự kiện vào các thẻ <a>: Bạn có thể thêm sự kiện vào các thẻ <a>, ví dụ như sự kiện click. Điều này rất hữu ích khi bạn muốn thay đổi hành vi mặc định của thẻ <a> khi người dùng nhấp vào.

for (let anchor of document.anchors) {
    anchor.addEventListener('click', function (event) {
        event.preventDefault();  // Ngăn hành vi mặc định của liên kết
        alert('Liên kết đã bị ngừng hoạt động.');
    });
}

Hiển thị kết quả:

Sau khi thực hiện các thao tác với các thẻ <a>, bạn có thể hiển thị kết quả lên console hoặc trực tiếp cập nhật giao diện người dùng trên trang web. Có hai cách chính để hiển thị kết quả:

  • Hiển thị kết quả trong Console: Sau khi thao tác với các thẻ <a>, bạn có thể in ra console để kiểm tra kết quả. Ví dụ, hiển thị số lượng thẻ <a> hoặc các thẻ đã thay đổi.

console.log('Số lượng thẻ <a> đã thay đổi: ', document.anchors.length);

Hiển thị kết quả trên giao diện trang web: Bạn có thể cập nhật nội dung của một phần tử HTML (chẳng hạn <p>, <div>,...) để hiển thị thông tin cho người dùng. Ví dụ, sau khi thay đổi tất cả các thẻ <a>, bạn có thể hiển thị số lượng các thẻ đã thay đổi trong một phần tử <p>.

<p id="anchorCount"></p>
document.getElementById('anchorCount').innerText = `Số lượng thẻ <a> trên trang: ${document.anchors.length}`;

Qua các bước hướng dẫn trên, bạn sẽ học cách truy xuất và thao tác với các thẻ <a> trong trang web, sử dụng The Anchors Collection trong JavaScript, cũng như cách hiển thị kết quả của các thao tác này lên giao diện hoặc console.

Gợi ý cách triển khai sử dụng document.anchors bằng JavaScript

Để triển khai bài tập về The Anchors Collection trong JavaScript, bạn có thể làm theo các bước dưới đây để tạo ra một trang HTML đơn giản và thử nghiệm các thao tác với các thẻ <a> trong trang. Mục tiêu là hiểu cách truy cập các thẻ <a>, thay đổi nội dung và thuộc tính của chúng, và hiển thị kết quả lên giao diện hoặc console.

Tạo một trang HTML với nhiều thẻ <a> để thử nghiệm:

Bắt đầu với việc tạo một trang HTML cơ bản chứa một số thẻ <a>. Những thẻ này sẽ là đối tượng để bạn thao tác trong JavaScript.

Cấu trúc HTML cơ bản:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Thử nghiệm với The Anchors Collection</title>
</head>
<body>
    <h1>Danh sách các liên kết</h1>

    <!-- Một số thẻ <a> để thử nghiệm -->
    <a href="https://www.example1.com" id="link1">Example 1</a><br>
    <a href="https://www.example2.com" id="link2">Example 2</a><br>
    <a href="https://www.example3.com" id="link3">Example 3</a><br>
    <a href="https://www.example4.com" id="link4">Example 4</a><br>

    <p id="anchorCount"></p> <!-- Chỗ để hiển thị số lượng thẻ <a> -->
    
    <script src="script.js"></script>
</body>
</html>

Trong ví dụ trên, bạn tạo một số liên kết đơn giản với các thuộc tính href khác nhau và đặt id cho mỗi thẻ <a> để dễ dàng truy cập và thao tác trong JavaScript.

Viết mã JavaScript để truy cập các thẻ <a> và thực hiện các thao tác

Lấy tất cả các thẻ <a>:

Sử dụng document.anchors để lấy tất cả các thẻ <a> trên trang.

Thao tác với các thẻ <a>:

  • Thay đổi thuộc tính href: Bạn có thể thay đổi URL của các thẻ liên kết.

  • Thay đổi văn bản của thẻ <a>: Bạn có thể thay đổi nội dung hiển thị của mỗi thẻ liên kết.

  • Lọc thẻ <a> theo điều kiện: Ví dụ, lọc các thẻ có chứa từ "example" trong thuộc tính href.

Hiển thị kết quả ra màn hình hoặc console:

Hiển thị số lượng các thẻ <a> có trong trang và cập nhật trang web hoặc console để kiểm tra hiệu quả của thao tác.

Mã JavaScript:

// Hàm để thao tác với các thẻ <a>
function manipulateAnchors() {
    // Lấy tất cả các thẻ <a> trên trang
    let anchors = document.anchors;

    // Hiển thị số lượng thẻ <a> trên trang
    document.getElementById('anchorCount').innerText = `Số lượng thẻ <a> trên trang: ${anchors.length}`;

    // Thao tác với từng thẻ <a>
    for (let anchor of anchors) {
        // Thay đổi thuộc tính href của mỗi thẻ <a>
        anchor.href = 'https://www.newurl.com';

        // Thay đổi văn bản hiển thị của thẻ <a>
        anchor.textContent = 'Liên kết đã được thay đổi';

        // Lọc và thao tác với các thẻ <a> có href chứa từ "example"
        if (anchor.href.includes('example')) {
            console.log('Liên kết có chứa "example":', anchor.href);
            anchor.style.color = 'red';  // Thay đổi màu sắc của liên kết có chứa "example"
        }
    }
}

// Gọi hàm để thực hiện thao tác
manipulateAnchors();

Giải thích mã:

  • document.anchors giúp bạn lấy tất cả các thẻ <a> trong trang.

  • Thay đổi hreftextContent: Chúng ta thay đổi thuộc tính href và nội dung hiển thị của mỗi thẻ <a>.

  • Lọc các thẻ <a> có chứa "example" trong href: Sử dụng phương thức includes() để lọc và thay đổi màu sắc của các thẻ <a> này.

  • Hiển thị số lượng thẻ <a> trên trang: Cập nhật phần tử <p>id="anchorCount" để hiển thị số lượng các thẻ <a>.

Kết quả hiển thị:

Sau khi chạy mã JavaScript, bạn sẽ thấy các kết quả sau:

  • Số lượng thẻ <a> sẽ được hiển thị trong phần tử <p id="anchorCount"> trên trang.

  • Các thẻ <a> có thuộc tính href sẽ được thay đổi thành https://www.newurl.com, và văn bản của mỗi liên kết sẽ thay đổi thành "Liên kết đã được thay đổi".

  • Các thẻ <a> có chứa từ "example" trong href sẽ được in ra trong console và thay đổi màu sắc thành đỏ.

Kiểm tra kết quả:

  • Console: Mở Developer Tools trong trình duyệt (F12 hoặc Ctrl+Shift+I), chọn tab Console, bạn sẽ thấy các thẻ <a> có chứa từ "example" được in ra.

  • Trang Web: Số lượng các thẻ <a> sẽ được hiển thị ngay trên trang web, và tất cả các thẻ liên kết sẽ có nội dung và màu sắc đã thay đổi.

Mở rộng cách sử dụng document.anchors bằng JavaScript

Khi làm việc với The Anchors Collection, bạn có thể áp dụng một số tính năng mở rộng để tăng cường khả năng tương tác và tùy chỉnh với các thẻ <a> trong trang web. Dưới đây là một số mở rộng mà bạn có thể áp dụng:

Lọc các thẻ <a> theo thuộc tính:

Một trong những tính năng mạnh mẽ khi làm việc với Anchors Collection là khả năng lọc các thẻ <a> dựa trên các thuộc tính của chúng. Ví dụ, bạn có thể tìm tất cả các thẻ <a> có thuộc tính href chứa một từ khóa cụ thể.

Ví dụ: Tìm tất cả các thẻ <a> có thuộc tính href chứa từ "example".
// Lọc và thay đổi các thẻ <a> có href chứa từ "example"
function filterAnchors() {
    const anchors = document.anchors;

    // Duyệt qua tất cả các thẻ <a>
    for (let anchor of anchors) {
        // Kiểm tra nếu href của thẻ chứa từ "example"
        if (anchor.href.includes('example')) {
            console.log('Liên kết có chứa "example":', anchor.href);
            // Thay đổi màu sắc của các thẻ <a> chứa từ "example"
            anchor.style.color = 'blue'; // Thay đổi màu sắc
            // Thêm một thuộc tính mới để đánh dấu
            anchor.setAttribute('title', 'Liên kết chứa từ "example"');
        }
    }
}

// Gọi hàm lọc các thẻ <a>
filterAnchors();
Giải thích:
  • anchor.href.includes('example'): Kiểm tra nếu thuộc tính href của thẻ <a> chứa từ "example".

  • setAttribute('title', '...'): Thêm một thuộc tính title cho các thẻ <a> chứa từ "example" để hiển thị khi người dùng di chuột qua liên kết.

Thêm sự kiện vào các thẻ <a>

Một tính năng quan trọng khác là thêm các sự kiện vào các thẻ <a>, chẳng hạn như sự kiện click để thay đổi hành vi mặc định của các liên kết khi người dùng nhấp vào chúng. Bạn có thể ngăn không cho các liên kết mở trang mới hoặc thay đổi hướng đi của liên kết.

Ví dụ: Ngăn không cho liên kết mở trang mới khi người dùng nhấp vào.
// Thêm sự kiện click để ngăn không cho liên kết mở trang mới
function addClickEventToAnchors() {
    const anchors = document.anchors;

    // Duyệt qua tất cả các thẻ <a>
    for (let anchor of anchors) {
        // Thêm sự kiện click
        anchor.addEventListener('click', function(event) {
            // Ngừng hành vi mặc định (không mở liên kết)
            event.preventDefault();
            // Hiển thị thông báo khi người dùng click vào liên kết
            alert('Bạn vừa click vào một liên kết, nhưng nó không mở ra!');
        });
    }
}

// Gọi hàm để thêm sự kiện click vào các thẻ <a>
addClickEventToAnchors();
Giải thích:
  • event.preventDefault(): Ngừng hành vi mặc định của sự kiện (ở đây là việc mở trang khi nhấp vào liên kết).

  • addEventListener('click', function(event) {...}): Thêm sự kiện click cho tất cả các thẻ <a> để can thiệp và thực hiện hành động thay thế.

Thay đổi màu sắc của các thẻ <a> khi di chuột qua

Để tăng cường tính tương tác, bạn có thể thay đổi màu sắc của các thẻ <a> khi người dùng di chuột qua chúng bằng cách sử dụng sự kiện mouseovermouseout trong JavaScript.

Ví dụ: Thay đổi màu sắc khi di chuột qua các thẻ <a>.
// Thay đổi màu sắc của các thẻ <a> khi di chuột qua (mouseover)
function addHoverEffect() {
    const anchors = document.anchors;

    // Duyệt qua tất cả các thẻ <a>
    for (let anchor of anchors) {
        // Thêm sự kiện mouseover để thay đổi màu sắc khi di chuột qua
        anchor.addEventListener('mouseover', function() {
            anchor.style.color = 'green'; // Thay đổi màu sắc khi di chuột qua
        });

        // Thêm sự kiện mouseout để quay lại màu sắc ban đầu khi di chuột ra
        anchor.addEventListener('mouseout', function() {
            anchor.style.color = ''; // Quay lại màu sắc mặc định
        });
    }
}

// Gọi hàm để thêm hiệu ứng di chuột
addHoverEffect();
Giải thích:
  • anchor.style.color = 'green': Khi người dùng di chuột qua thẻ <a>, màu sắc của liên kết sẽ thay đổi thành màu xanh.

  • anchor.addEventListener('mouseover', ...)anchor.addEventListener('mouseout', ...): Đoạn mã này giúp thay đổi màu sắc khi người dùng di chuột qua và đưa chuột ra khỏi liên kết.

Kết bài

Thông qua bài tập này, bạn đã có cơ hội làm quen và hiểu rõ hơn về The Anchors Collection trong JavaScript, một công cụ mạnh mẽ giúp thao tác với các thẻ <a> trong trang web. Bạn đã học cách truy cập tất cả các thẻ <a>, thay đổi thuộc tính của chúng, cũng như thêm các sự kiện và tùy chỉnh hành vi của các liên kết. Những kiến thức này sẽ giúp bạn xây dựng các tính năng động và tương tác hơn trên trang web, đồng thời cải thiện khả năng làm việc với DOM và các phần tử trên trang.

Việc hiểu và áp dụng các thao tác với The Anchors Collection là một bước quan trọng trong việc tạo ra các trải nghiệm người dùng mượt mà và linh hoạt, giúp trang web của bạn trở nên sống động và dễ sử dụng hơn. Hãy tiếp tục khám phá các tính năng JavaScript khác để làm phong phú thêm khả năng lập trình web của bạn!

Bài viết liên quan