AMcoder - javascript, python, java, html, php, sql

Հաջորդ կոճակի համար ցուցակի հաջորդ կետից ընտրեք img src-ը

Ես սկսնակ եմ և ինձ խենթացնում եմ այս հարցում, ուստի հուսով եմ, որ ինչ-որ մեկը կարող է օգնել, կամ գոնե կասի ինձ, որ ես սխալ ծառ եմ հաչում:

Ես փորձում եմ ներդնել հաջորդ և նախորդ կոճակները լուսանկարների պատկերասրահի համար՝ օգտագործելով JavaScript (կամ jQuery; ամեն ինչ, որն իսկապես աշխատում է): Ես դրան մոտեցել եմ՝ փորձելով պատկերները տեղադրել պատվիրված ցուցակի մեջ, այնուհետև հանել src տվյալները ցուցակի հաջորդ կետից, բայց դա չի աշխատում:

html-ն այս տողերի հետ մեկտեղ մի բան է (բլոկի div-ն օգնում է պատկերները տեղավորել նախքան մոդալ պատուհանը բացելը, և դրանց մեջ կան նաև վերնագրեր, այնպես որ դա պարզապես մեկ կետից բաղկացած, «հեշտ» ցուցակ չէ):

<div class="content">
    <ol>
         <li>
              <div class="block">
                  <img src="Images/image1.jpg">
              </div>
         </li>

         <li>
              <div class="block">
                   <img src="Images/image2.jpg">
              </div>
         </li>
   </ol>  
</div>

Այսպիսով, հիմնականում, մոդալը ցույց կտա առաջին պատկերը (image1), և ես փորձում էի ստանալ հաջորդ կոճակը՝ գտնելու ցուցակի հաջորդ տարրը, վերցնել դրա img src-ը (այսինքն՝ image2.jpg) և փոխարինել ներկայիսը դրանով:

Սա իրականում հնարավո՞ր է: Ստորև բերված ծածկագիրը մի տեսակ տրամաբանություն է այն ամենի հիմքում, ինչ ես փորձում էի, բայց ես բացակայում եմ մի քանի հիմնական մասեր, ցավոք սրտի:

var images = document.getElementsByTagName('img');
var modalImg = document.getElementById("img01");
var captionText = document.getElementById("caption");
var i;

var next = document.getElementsByClassName("next")[0];

for (i = 0; i < images.length; i++) {
    images[i].onclick = function(){
        modal.style.display = "block";
        modalImg.src = this.src;
       /*and this is where it all falls down!*/
        var indexNo = $(this).index();
        var nextIndex = indexNo +1;
        var nextItem = select the list item with the nextIndex;
    }

    next.onclick = function (){
        newSrc = nextItem.getElementsByTagName('src');
        modalImg.src = newSrc;
    }
}

Եվ հետո ես կիրականացնեմ սրա հակադարձը նաև նախորդ կոճակի համար:

Ինչպես ասում եմ, ես միայն սկսնակ եմ, այնպես որ ասեք ինձ, եթե ես փորձում եմ անձրև ընկնել Ատակամայում: Շնորհակալություն կարդալու համար, ես անհամբեր սպասում եմ որևէ մեկի կարծիքին :)

01.04.2016

  • Ինչու՞ պարզապես չեք հատկացնում ձեր պատկերներին մի հատկանիշ, որը ձեզ կասի ընթացիկ ինդեքսը: Այնուհետև հաջորդ/նախորդը ստանալը ակտիվ պատկերի հատկանիշի արժեքի ավելացման/նվազման խնդիր է: 01.04.2016

Պատասխանները:


1

Փորձեք սա. Մի փոքր փոփոխեք ձեր նշագրումը.

<div class="content">
    <ol>
        <li class="image-wrapper">
            <div class="block">
                <img data-image-index="1" src="Images/image1.jpg">
            </div>
        </li>

        <li class="image-wrapper">
            <div class="block">
                <img data-image-index="2" src="Images/image2.jpg">
            </div>
        </li>
   </ol>
   <button class="prev-btn">Prev</button>
   <button class="next-btn">Next</button>
</div>

Այնուհետև դուք կարող եք նման բան անել.

var imageCarousel = {
    totalImages: false,
    currentIndex: false,

    init: function() {
        this.totalImages = this.getTotalImages();

        if (this.totalImages) {
            $('.image-wrapper img[data-image-index]').click(function(e){
                e.preventDefault();

                imageCarousel.currentIndex = $(this).data('imageIndex');

                // Show the image here...
            });

            $('.prev-btn, .next-btn').click(function(e){
                e.preventDefault();

                var newIndex = $(this).is('.prev-btn') ? imageCarousel.currentIndex - 1 : imageCarousel.currentIndex + 1,
                    newImageToShow;

                if (newIndex > imageCarousel.totalImages) {
                    newIndex = 1;
                } else if (newIndex == 0) {
                    newIndex = imageCarousel.totalImages;
                }

                newImageToShow = $('.image-wrapper img[data-image-index='+newIndex+']');

                if (newImageToShow.length) {
                    newImageToShow.trigger('click');
                }
            });
        }
    },

    getTotalImages: function() {
        return $('.image-wrapper').length;
    }
}

Եվ անվանեք սցենարը, ակնհայտորեն.

$(function(){
    imageCarousel.init();
});
01.04.2016

2

Ես դա չեմ փորձարկել։ Փորձեք և ստուգեք, արդյոք ստորև նշված կոդը աշխատում է:

var images = document.getElementsByTagName('img');
var modalImg = document.getElementById("img01");
var captionText = document.getElementById("caption");
var i;

var next = document.getElementsByClassName("next")[0];

for (i = 0; i < images.length; i++) {
    images[i].onclick = function(){
        modal.style.display = "block";
        modalImg.src = this.src;
        /*and this is where it all falls down!*/
        //var indexNo = $(this).index();
        var indexNo = i;
        var nextIndex = indexNo +1;
        var nextItem = document.getElementsByTagName('img')[nextIndex];
    }

    next.onclick = function (){
        newSrc = nextItem.getElementsByTagName.src;
        modalImg.src = newSrc;
    }
}

Եթե ​​դուք պարզապես փորձում եք ձեր ձեռքերը JavaScript-ում՝ դա անելով, ապա դա լավ է: Բայց եթե դուք իրականում փորձում եք ինչ-որ բան կառուցել այստեղ, ապա ես կառաջարկեի, որ չփորձեք արդյունահանել աղբյուրը և փոխարինել դրանք պատկերասրահ ստեղծելու համար: Փորձեք բոլոր պատկերները/տարրերը միանգամից հասցնել մոդալին: Այնուհետև սեղմեք փոխակերպեք/թարգմանեք դրանք աջից ձախ կամ ձախից աջ՝ օգտագործելով CSS3: Այդ կերպ դուք նույնպես կստանաք գեղեցիկ և արագ սահիչ: Դա իրականացնելու համար ձեզ հարկավոր է ավելի շատ CSS իմանալ, քան JavaScript/jQuery-ն:

Ավելի շատ գրադարաններ կան cycle2 ձեր բոլոր սլայդերի կարիքների համար: Օգտագործեք այն՝ իրերն ավելի արագ դարձնելու և բրաուզերի աջակցություն ստանալու համար:

01.04.2016
Նոր նյութեր

Օգտագործելով Fetch Vs Axios.Js-ը՝ HTTP հարցումներ կատարելու համար
JavaScript-ը կարող է ցանցային հարցումներ ուղարկել սերվեր և բեռնել նոր տեղեկատվություն, երբ դա անհրաժեշտ լինի: Օրինակ, մենք կարող ենք օգտագործել ցանցային հարցումը պատվեր ներկայացնելու,..

Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար
Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար Ինչպե՞ս հանգստացնել ձեր միտքը և աշխատեցնել ձեր պրոցեսորը: Ինչպես մնալ հանգիստ և զարգանալ ճնշման տակ...

Մեքենայի ուսուցում բանկային և ֆինանսների ոլորտում
Բարդ, խելացի անվտանգության համակարգերը և հաճախորդների սպասարկման պարզեցված ծառայությունները բիզնեսի հաջողության բանալին են: Ֆինանսական հաստատությունները, մասնավորապես, պետք է առաջ մնան կորի..

Ես AI-ին հարցրի կյանքի իմաստը, այն ինչ ասում էր, ցնցող էր:
Այն պահից ի վեր, երբ ես իմացա Արհեստական ​​ինտելեկտի մասին, ես հիացած էի այն բանով, թե ինչպես է այն կարողանում հասկանալ մարդկային նորմալ տեքստը, և այն կարող է առաջացնել իր սեփական արձագանքը դրա..

Ինչպես սովորել կոդավորումը Python-ում վագրի պես:
Սովորելու համար ծրագրավորման նոր լեզու ընտրելը բարդ է: Անկախ նրանից, թե դուք սկսնակ եք, թե առաջադեմ, դա օգնում է իմանալ, թե ինչ թեմաներ պետք է սովորել: Ծրագրավորման լեզվի հիմունքները, դրա..

C++-ի օրական բիթ(ե) | Ամենաերկար պալինդրոմային ենթաշարը
C++ #198-ի ամենօրյա բիթ(ե), Ընդհանուր հարցազրույցի խնդիր. Ամենաերկար պալինդրոմային ենթատող: Այսօր մենք կանդրադառնանք հարցազրույցի ընդհանուր խնդրին. Ամենաերկար palindromic substring...

Kydavra ICAReducer՝ ձեր տվյալների ծավալայինությունը նվազեցնելու համար
Ի՞նչ է ICAReducer-ը: ICAReducer-ն աշխատում է հետևյալ կերպ. այն նվազեցնում է նրանց միջև բարձր փոխկապակցված հատկանիշները մինչև մեկ սյունակ: Բավականին նման է PCAreducer-ին, չնայած այն..