मैंने एक सरणी के साथ चित्र दिखाने की कोशिश की ताकि मैं इसे प्रति विलंब बदल सकूं, एक स्लाइड शो की तरह। समस्या यह है कि केवल पहली तस्वीर ही लोड होगी। जब सरणी का काउंटर बदलता है, तो चित्र लोड नहीं होगा।

छवियों के पथ सभी सही हैं

<!DOCTYPE html>`enter code here`
<html lang="en">
<head>
     <meta charset="UTF-8">
    <title>Test2</title>
    <script>

        var bilder = []; 
        var zeit = 3000;
        var p = 0;

        bilder[0] = "../Bilder/Bild1.jpg";
        bilder[1] = "../Bilder/Bild2.jpg";
        bilder[2] = "../Bilder/Bild3.jpg";
        bilder[3] = "../Bilder/Bild4.jpg";

        function BildAutoWeiter()
        {
            document.bild.src = bilder[p]; 
            for( var i=0; i<= bilder.length; i++)                              
            {
                if(i <= bilder.length)
                {
                     p++;
                }
                else
                {
                    i = 0;
                }
            }
            setTimeout("BildAutoWeiter()", zeit);                       
        }
</script>
</head>
<body onload="BildAutoWeiter()">
<div>
    <img name ="bild" width="100%" height="50%">
</div>
</body>
</html>
1
CoreIce 27 अक्टूबर 2019, 16:37

1 उत्तर

सबसे बढ़िया उत्तर

तत्वों को उनके name='' द्वारा चुनने के लिए आपको getElementsByName() का उपयोग करना होगा। यह उन तत्वों की एक सरणी देता है जो उस name का उपयोग करते हैं, इसलिए किसी विशिष्ट को चुनने के लिए, 0 से शुरू होने वाले सूचकांक [index] का उपयोग करें। इसके बजाय ऐसा करें:

document.getElementsByName('bild')[0].src = bilder[p]; 

वह पहले तत्व का चयन करता है जो name='bild' का उपयोग करता है

साथ ही, for कथन थोड़ा बेकार है। आप इसके बजाय कर सकते हैं:

function BildAutoWeiter()
{
  document.bild.src = bilder[p];
  p++;
  setTimeout(BildAutoWeiter, zeit);
}

आपको फ़ंक्शन नाम को उद्धरणों में रखने की आवश्यकता नहीं है और setTimeout में फ़ंक्शन को कॉल करते समय आपके पास कोष्ठक नहीं हो सकते हैं।

-1
Rojo 27 अक्टूबर 2019, 13:57