setInterval () ning Jquery skripti bilan

Tezda ushbu skript bilan menga yordam berganlarga minnatdorman, barchangiz menga JavaScript va jqueryning eng oqlangan tomonlarini o'rganishda juda katta yordam berdi.

Ushbu buyruq bilan bitta yakuniy muammo bor, men tasvirni o'zgartirgich orqali o'tish uchun setinterval() ni ishlataman, JS/Jquerycode quyidagilar:

$(function() {
var rotateTimer = setInterval(rotateImg,15000);

$('#feature-links a').click(function() {
    if (!$(this).hasClass('a-active')) {
        clearInterval(rotateTimer);
        switchToImg($(this).attr('class'));

    }
});

function switchToImg(image) {
    var $featureImage = $('#feature-image');        
    $featureImage.fadeOut(200, function() {
        $featureImage.css('background-image', 'url(images/main_' + image + '.jpg)').fadeIn(200);
        $('#feature-detail div').removeClass('d-active').filter('.d' + image).addClass('d-active');
    });
    $('#feature-links a').removeClass('a-active').filter('.' + image).addClass('a-active');
};

function rotateImg() {
    var next = 'a' + (parseInt($('#feature-links a.a-active').attr('class').match(/[0-9]/))+parseInt(1));

    if (!$('#feature-links a').hasClass(next))
        next = 'a1';
    switchToImg(next);
}
});

This script works on class names of tags that allow a user to manually switch to an image. As well as this, rotateImg() is providing an automated image/text cycle every 15 seconds with the help of setInterval().

Foydalanuvchining kodi qo'lda bosganidan so'ng, setInterval() bilan qayta ishlayapman.

In the .click function I clear the interval timer and then make a call to the switchToImg() function with the class name of the tag that was clicked on passed as a variable.

Men foydalanuvchining tsiklning oxirigacha bog'langan va darhol keyingi tasvirga o'tishiga yo'l qo'ymaslik uchun taymerni qanday qilib qayta o'rnatishga harakat qilmoqchiman.

Funktsiyani tugatgandan so'ng, taymer qayta tiklanganidan keyin o'zimning qayta chaqiruv funktsiyasini qurishga harakat qildim, shuning uchun men uni dastlabki vaqtga (masalan, 30 soniya) keyin 15 soniyalik soatga orqaga qayting. Mening izlanishlarim menda turli xil omborlar yukiga etakchilik qilmoqda, chunki men boshimni yoki quyruqni qiyinlashtirmoqdaman.

Ushbu funktsionallikni skriptga qanday qilib yaratishim mumkinligi haqida har qanday ko'rsatma albatta chinakamiga sazovor bo'ladi. Vaqtingiz uchun rahmat. :)

1
Yonma-diqqat sifatida: parseInt ($ ('# xususiyat-havolalar aa-faol'). Attr ('class') muvofiq (/ [0-9] /)) + parseInt (1) parseInt ($ ('# xususiyat-havolalar aa-faol') bo'lishi kerak. (/ [0-9] /), 10) +1 . parseInt , radix (bazasi) (bu holda 10 ) , bu ixtiyoriy, lekin tavsiya etiladi . Bundan tashqari parseInt (1) butunlay foydasiz.
qo'shib qo'ydi muallif Rocket Hazmat, manba
Agar radiusni unutgan bo'lsangiz, ko'pi brauzerlari to'g'ri qiymatni qaytaradi, lekin siz doim ishonch hosil qila olmaysiz. :-)
qo'shib qo'ydi muallif Rocket Hazmat, manba
Raketa uchun minnatdorman, men birovning kodni baholashini bilardim, chunki radix haqida juda foydali, rahmat. Men kodni ammendim. +1
qo'shib qo'ydi muallif David Barker, manba

2 javoblar

Men sizning so'ragan narsangizga amal qilsangiz, men 100% ishonchim komil emas, lekin foydalanuvchi nima qilmoqchi bo'lsa, foydalanuvchi klikdan keyin kechiktirgandan keyin intervalli taymerni qayta ishga tushirishni istasangiz, shunday qilishingiz mumkin:

$('#feature-links a').click(function() {
    if (!$(this).hasClass('a-active')) {
        clearInterval(rotateTimer);
        switchToImg($(this).attr('class'));
        setTimeout(function() {
            rotateTimer = setInterval(rotateImg, 15*1000);
        }, 15*1000);
    }
});

15 sekunddan kechiktirilgandan keyin intervalli taymerni qayta ishga tushirish uchun bir martalik setTimeout() qo'ng'iroqidan foydalanasiz. Keyingi rasm yana bir marta bosilgandan keyin 15 soniyadan keyin 15 soniyadan keyin 15 soniyadan keyin 15 soniyadan keyin sizga 15 + 15 soniyani beradi.

2
qo'shib qo'ydi
Xo'sh, 100% ni bilmayman, nima uchun so'radim, boshga mix urding. Rahmat, bu ish!
qo'shib qo'ydi muallif David Barker, manba

Savolni to'g'ri tushunganimga amin emasman. Lekin asosan foydalanuvchi klikdan keyin taymerning oldini olishni xohlayman. SwitchToImg aynan shunday qilgandan so'ng setInterval ni chaqirmaslik kerakmi? U switchToImg-ni chaqiradi, keyin esa har 15 soniyadan so'ng foydalanuvchini bosishi mumkin.

0
qo'shib qo'ydi
Javascript UZB
Javascript UZB
99 ishtirokchilar

@js_uzb @vuejs_uz @react_uz @nodejs_uz @angular_uz @ngTashkent @yiiframework_uz @laravel_uz @linux_uzbek @python_uz @swift_uzb —————— @uzdevgroup @UzGeeksGroup ——— @UzDev_Jobs @jobs_uzb