簡體   English   中英

單擊以更改多個項目的圖像

[英]Click to change image across multiple items

我正在嘗試設置一個javascript函數,該函數將獲取向下箭頭圖像並在單擊時將其與向上箭頭圖像交換。 當圖像有 id 時它可以工作,但是因為我有幾個使用箭頭圖像的菜單項,我想嘗試讓它作為類名或普通名稱工作,但我無法獲得函數當圖像不是 id 時更改圖像的來源。 任何人都可以幫忙嗎? 這是我當前的 HTML 標記:

<div class="header__links hide-for-mobile" >
                <a id="subMenu" href="#">Features <img class="downArrow" src="/assets/images/icon-arrow-down.svg"></a>
                <a href="#">Company</a>
                <a href="#">Careers</a>
                <a href="#">About</a>
            </div>

這是我的 JS

const subMenu = document.querySelector('#subMenu');
subMenu.addEventListener('click', function() {
    if(subMenu.classList.contains('subOpen')) {
        subMenu.classList.remove('subOpen');
        document.getElementsByClassName('downArrow').src="/assets/images/icon-arrow-down.svg";
    }

    else {
        subMenu.classList.add('subOpen');
        document.getElementsByClassName('downArrow').src="/assets/images/icon-arrow-up.svg";
    }
})

現在,由於您的標記僅包含一個帶有downArrow類的元素,您可以將代碼更新為:

const subMenu = document.querySelector('#subMenu');
subMenu.addEventListener('click', function() {
    if(subMenu.classList.contains('subOpen')) {
        subMenu.classList.remove('subOpen');
        document.getElementsByClassName('downArrow')[0].src="/assets/images/icon-arrow-down.svg";
    }

    else {
        subMenu.classList.add('subOpen');
        document.getElementsByClassName('downArrow')[0].src="/assets/images/icon-arrow-up.svg";
    }
})

但更好的方法是getELementsByClassName方法的結果。 你可以這樣做:

const subMenu = document.querySelector('#subMenu');
subMenu.addEventListener('click', function() {
    if(subMenu.classList.contains('subOpen')) {
        subMenu.classList.remove('subOpen');
        Array.from(document.getElementsByClassName("downArrow")).forEach(
            function(element, index, array) {
                element.src="/assets/images/icon-arrow-down.svg";
            }
        );
    }

    else {
        subMenu.classList.add('subOpen');
        Array.from(document.getElementsByClassName("downArrow")).forEach(
            function(element, index, array) {
                element.src="/assets/images/icon-arrow-up.svg";
            }
        );
    }
})

暫無
暫無

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

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