सशर्त और टाइमर का उपयोग कर jQuery के साथ एलिमेंट क्लासेस बदलना

अनिवार्य रूप से मेरे पास तीन अलग-अलग वर्ग हैं जिन्हें मेरे पृष्ठ पर किसी तत्व पर लागू किया जा सकता है। प्रत्येक में एक अलग पृष्ठभूमि छवि होती है और मैं यह जानने के लिए jQuery का उपयोग करना चाहता हूं कि वर्तमान में कौन सी कक्षा मौजूद है और उस वर्ग को हटा दें और इसे दूसरे के साथ बदलें। और फिर प्रत्येक 5000ms समारोह को चलाने के लिए उस पर एक टाइमर सेट करें यह मेरा कोड जैसा दिखता है

$(document).ready(
    function(){
    var toggleImage = function(){
        if($(".home").hasClass("home1")){
            $(".home").removeClass("home1").addClass("home2")       }
        elseif($(".home").hasClass("home2")){
            $(".home").removeClass("home2").addClass("home3")
        }
        elseif($(".home").hasClass("home3")){
            $(".home").removeClass("home3").addClass("home1")
        }

    }

    setInterval(toggleImage(), 5000);​

    });

घर की कक्षा हमेशा वहां रहेगी और मैं तत्व पर अन्य वर्गों को जोड़ने और हटाने की कोशिश कर रहा हूं। मैं PHP से आ रहा हूं इसलिए मुझे लगता है कि मेरा वाक्यविन्यास बंद हो सकता है।

0
बस एफवाईआई, आपको समझाना चाहिए कि वास्तव में आपके कोड के साथ आपको क्या समस्या है। इस मामले में त्रुटि त्रुटि स्पष्ट थी, लेकिन यह हमेशा मामला नहीं है।
जोड़ा लेखक Felix Kling, स्रोत

2 उत्तर

आपको फ़ंक्शन को setInterval पर पास करना होगा। वर्तमान में आप कॉलिंग toggleImage हैं और इसके वापसी मान को पास करते हैं, जो अपरिभाषित है।

फ़ंक्शन को कॉल न करें:

setInterval(toggleImage, 5000);​

कम से कम फ़ायरफ़ॉक्स में आपको रनटाइम त्रुटि मिल जाएगी:

त्रुटि: बेकार सेट अंतराल कॉल (तर्क के आसपास गायब उद्धरण?)


मैं PHP से आ रहा हूं इसलिए मुझे लगता है कि मेरा वाक्यविन्यास बंद हो सकता है।

आप सही हैं, elseif और यदि होना चाहिए। यह एक वाक्यविन्यास त्रुटि है और आपको इसे कंसोल में भी देखना चाहिए था।


Learn how to debug JavaScript to find syntax and runtime errors on your own.

3
जोड़ा
आपके द्वारा दिए गए परिवर्तनों को प्रतिबिंबित करने के लिए कोड को बदल दिया गया है, हालांकि यह अभी भी कक्षाओं को स्विच नहीं कर रहा है। कोई विचार क्या मैं अभी भी गलत कर रहा हूँ। आपके त्वरित उत्तर के लिए भी धन्यवाद।
जोड़ा लेखक William Wilkerson, स्रोत
मुझे कंसोल में कोई त्रुटि नहीं मिल रही है।
जोड़ा लेखक William Wilkerson, स्रोत
सेटिनटरवाल के बाद अर्धविराम को हटाकर इसे हल किया गया।
जोड़ा लेखक William Wilkerson, स्रोत
त्वरित अन्य प्रश्न। मैं स्विच में एक jQuery फीका प्रभाव कैसे लगा सकता है?
जोड़ा लेखक William Wilkerson, स्रोत
कंसोल पर एक नज़र डालें। कोई त्रुटि? जानकारी के बिना मुझे यह बताना असंभव है कि क्या गलत हो सकता है।
जोड़ा लेखक Felix Kling, स्रोत
मैंने jsFiddle ( jsfiddle.net/g7394 ) बनाने की कोशिश की और त्रुटि मिली: सिंटेक्स त्रुटि: अवैध चरित्र । ऐसा लगता है कि आपके पास setInterval (toggleImage, 5000) के बाद एक अजीब अदृश्य चरित्र है; (बेवकूफ देखें)। आपको इसे हटाना चाहिए।
जोड़ा लेखक Felix Kling, स्रोत
यह मूल रूप से मेरा मतलब था! आपके द्वारा हटाए गए लाइन के अंत को हटाकर setInterval के बाद अर्धविराम के बाद आपके पास एक अजीब अदृश्य चरित्र था। अब आप अर्धविराम फिर से समाप्त कर सकते हैं। मेरी पिछली टिप्पणी में मेरी पहेली को देखो। आपको setInterval के साथ लाइन के अंत में एक लाल बिंदु देखना चाहिए। यह तुम्हारा अजीब चरित्र है।
जोड़ा लेखक Felix Kling, स्रोत

आप सेट इंटरवल को एक फ़ंक्शन पास करना चाहते हैं। कॉलिंग टॉगल इमेज() फ़ंक्शन चलाता है और परिणाम को पार करने के अंत में समाप्त होता है। सही वाक्यविन्यास होना चाहिए:

setInterval(toggleImage, 5000);
1
जोड़ा