簡體   English   中英

如何在不使用 ID 的情況下在 ul 中定位 li?

[英]How to target li within ul without using IDs?

我正在嘗試將 eventListeners 附加到我的 HTML 的 ul 中的每個 li。 這是一個家庭作業,所以我根本無法更改 HTML。 這是我的 HTML,我要更改的是 ul class '分頁'中的兩個按鈕:

    <body>

        <!-- Gallery HTML -->
        <section id="gallery">

            <h2>Image <strong>Gallery</strong></h2>

            <!-- Gallery Image & Details -->
            <article>
                <p><img 
                    src="images/winter.jpg" 
                    alt="Winter Landscape: Snow covered mountains">
                </p>            
                <h3>Image Caption</h3>
                <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
            </article>

            <!-- Thumbnail Pagination -->
            <ul class="pagination">
                <li><button>previous</button></li>
                <li><button>next</button></li>
            </ul>

        </section>

        <!-- Javascript -->
        <script src="js/gallery.js"></script>

    </body>

我在我的 JavaScript 中試過這個:

let nextButton = pageSection.getElementsByTagName('li:first-of-type');
let prevButton = pageSection.getElementsByTagName('li:last-of-type');

但是,如果我使用 console.log(nextButton) 或 console.log(prevButton),它們都會在瀏覽器控制台中返回 HTMLcollection []。 我不確定它的目標是否正確。

下面是一個事件監聽器的例子:

nextButton.addEventListener("click", function changeImageNext(){

            for (i = 0; i < templateArray.length; i++){
                // console.log(articles[i]+ " " + i);

                activeArticle = articles.length[i + 1];

                // inserts the updated html into the html file
                galleryHeading.insertAdjacentHTML('afterend',templateArray[i]);

            }
        });

但它在瀏覽器中返回此錯誤: Uncaught TypeError: nextButton.addEventListener is not a function

我這周才開始學習 JavaScript 和 HTML,所以我還不精通。 另外,我不能使用 JQuery 或任何類型的框架!

謝謝你的幫助!

既然你知道你有兩個li.pagination內部,你可以使用document.querySelectorAll ,它返回一個元素數組。 只需定位數組中元素的索引即可。 例子:

let navButtons = document.querySelectorAll('.pagination li');
let prevButton = navButtons[0];
let nextButton = navButtons[1];

prevButton.addEventListener('click', (event) => {

});

nextButton.addEventListener('click', (event) => {

});

document.getElementsByTagName("LI")

這將為您返回所有 li 標簽的列表。 循環遍歷該列表 select 按索引,隨心所欲。

因為你沒有其他的 li 在你的身體里你真的不需要擔心任何特殊的選擇器

"li:last-of-type" 不正確,但 getElementsByTagName 只是希望接受要查找的標簽名稱。 沒有任何特殊的 sudo 類

試試看:

let nextButton = document.getElementsByClassName("pagination")[0].children[0]
let prevButton = document.getElementsByClassName("pagination")[0].children[1]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM