Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 25
  1. #1
    Fießers Erstling
    Themenstarter

    Registriert
    12.2007
    Beiträge
    124

    Problem mit Schleife bei der Realisierung eines Sliders

    Hi!

    Ich hoffe ihr könnt mir helfen!

    Ich arbeite an einem Slider, da es noch keinen passenden im Web gibt. Nivo-Slider kann nur Bilder hin und herschieben und der AnythingSlider passt auch nicht...

    Da ich mich aber nicht so wirklich gut in JavaScript auskenne gibt es schon Probleme. Hier ist mein Testfile (oben und unten fehlt was, ich weiß...):

    Code:
    <script type="text/javascript" charset="utf-8">
    		$(document).ready(function(){ 
    			$('#slider div').hide(); // reset all slides
    			var n = $("#slider div").length; // counting how many slides there are
    			var zufall=Math.floor((Math.random()*n) + 1); // creating a random number
    			var nextslide = showSpecific(zufall); // showing the first random slide
    			
    			animation(nextslide,n); // starting the animation
    		});
    		
    		function animation(start,slides) {
    			var i = start; // variable for counting (slide 1, slide 2, ...)
    			while(1) {
    				setTimeout("showSpecific(i)",2000); // waiting 2 seconds then --> showSpecific()
    				if(i==slides) { // if last slide --> 
    					i = 1; // back to beginning
    				} else {
    					i++; // next slide number
    				}
    			}
    		}
    		
    		function showSpecific(slide) {
    			$('#slider>ul>li').removeClass('active'); // reset all classes
    			$('#slider div').fadeOut(); // reset all slides
    			
    			$('#slider div:nth-child('+slide+')').fadeIn('slow'); // show right slide
    			// $('#slider div:nth-child('+slide+')').addClass('active'); // append class="active" to div
    			$('#slider>ul>li:nth-child('+slide+')').addClass('active'); // -,- to li
    			
    			var x = slide + 1; // variable for the next slide
    			return x; // return this value for later use
    		}
    	</script>
    </head>
    <body>
    	<div id="box">
    		<div id="slider">
    			<div>
    				<h3>First Test Slide</h3>
    				<p>
    					Aenean facilisis nulla vitae urna tincidunt congue sed ut dui. Morbi malesuada nulla nec purus convallis consequat. Vivamus id mollis quam. Morbi ac commodo nulla. In condimentum orci id nisl volutpat bibendum. Quisque commodo hendrerit lorem quis egestas. Maecenas quis tortor arcu. Vivamus rutrum nunc non neque consectetur quis placerat neque lobortis. Nam vestibulum, arcu sodales feugiat consectetur, nisl orci bibendum elit, eu euismod magna sapien ut nibh. Donec semper quam scelerisque tortor dictum gravida.
    				</p>
    			</div>
    			<div>
    				<img src="picture.png">
    			</div>
    			<div>
    				<ul>
    					<li>In condimentum orci id</li>
    					<li>Vivamus id mollis quam. Morbi ac commodo nulla. In</li>
    					<li>Phasellus molestie magna non est bibendum non</li>
    					<li>Nunc eu ullamcorper orci. Quisque</li>
    					<li>Quisque lacus quam, egestas ac tincidunt a, lacinia vel</li>
    					<li>Lorem ipsum dolor sit amet, consectetur adipiscing</li>
    					<li>Nam pulvinar, odio sed rhoncus suscipit, sem diam ultrices mauris</li>
    				</ul>
    			</div>
    			<!--><div>
    				<iframe width="400" height="200" src="http://www.youtube.com/embed/L9szn1QQfas?rel=0" frameborder="0" allowfullscreen></iframe>
    			</div>-->
    			<ul>
    				<li><a href="javascript:showSpecific(1)">1</a></li>
    				<li><a href="javascript:showSpecific(2)">2</a></li>
    				<li><a href="javascript:showSpecific(3)">3</a></li>
    				<!--<li><a href="javascript:showSpecific(4)">4</a></li>-->
    			</ul>
    		</div>
    	</div>
    Leider hängt sich da aber der Browser auf. Darf man while(1) vielleicht nicht schreiben? Bzw. wie kann man dann eine Endlosschleife realisieren?

    Das File ist außerdem zu finden unter: http://nicoeinsidler.bplaced.com/p/test-slider/.

    Hoffe es kann mir wer helfen und meine Frage ist nicht zu blöd...

    lg
    nico

    EDIT: Weil ich gesehen hab, dass der Code so unschön abgebildet wird:

    Click for large view - Uploaded with Skitch

  2. #2
    drp
    drp ist offline
    Ontario Avatar von drp
    Registriert
    04.2011
    Beiträge
    342
    Statt der Schleife würde ich eine Funktion machen und diese dann automatisch mit setInterval("Funktion()", 1); jede Millisekunde aufrufen.

    BTW: Deine MW-Homepage wird auf dem iPad/iPhone falsch angezeigt. Der Farbverlauf unten scrollt mit, da es für iPads und iPhones kein Position:fixed; gibt...
    Geändert von drp (16.05.2011 um 14:30 Uhr)
    Viele Grüße von DRP - Homepage
     MacBook Air 11,6" |  iPhone 3GS 8GB |  iPad 2 16GB weiß Wi-Fi |  Magic Mouse | PC

  3. #3
    Dülmener Rosenapfel Avatar von das_micha
    Registriert
    03.2007
    Ort
    Bad Bevensen aka der A**** der Heide
    Alter
    34
    Beiträge
    1.666
    Auf den ersten Blick schmeiss mal das while raus. Das was du damit bauen willst macht setinterval
    Mit deiner while schiesst du dir den Speicher zu. Weil das Script bei dem settimeout nicht anhält. Stattdessen werden dir ein paar tausend timeouts gestartet die aber erst nach 2 Sekunden anlaufen.

    Schau dir mal über den firebug an wie die slider funktionieren. Die arbeiten eigentlich so, dass das erste Element nachdem es überblendet wird, an das Ende der elementliste geschoben wird. Dadurch arbeitet das Script theoretisch immer nur das erste Element ab.
    Wenn du was anderes als Bilder sliden möchtest, dann schau dir mal jcarousel an. Wobei der basisumfang auch schnell selbst geschraubt ist.
    Vollzeitfalschparker....
    MacBook late '08 2,0 C2D - 4GB | iMac 27" i5 - 12GB | MacMini 1,83 C2D - 1GB | iPhone 3Gs weiß + iPad 32GB | ATV2
    last but not least: good old iPod Shuffle 512MB*g*

  4. #4
    Fießers Erstling
    Themenstarter

    Registriert
    12.2007
    Beiträge
    124
    Zitat Zitat von drp Beitrag anzeigen
    Statt der Schleife würde ich eine Funktion machen und diese dann automatisch mit setInterval("Funktion()", 1); jede Millisekunde aufrufen.
    Ok. Danke!

    Habe es jetzt einmal ausprobiert, aber ich glaube dass ich da noch etwas falsch mache:

    Click for large view - Uploaded with Skitch

    Weil irgendwie muss doch setInterval() öfters aufgerufen werden. Also gehört setInterval dann doch in eine Schleife?

    Zitat Zitat von drp Beitrag anzeigen
    BTW: Deine MW-Homepage wird auf dem iPad/iPhone falsch angezeigt. Der Farbverlauf unten scrollt mit, da es für iPads und iPhones kein Position:fixed; gibt...
    Danke! Ja mir ist dieser Fehler bekannt, allerdings ist die komplette Seite noch im Aufbau. Zwar geht jetzt schon lange nichts mehr weiter, da ich keine Zeit habe, aber im Sommer wird sie dann fertig.

  5. #5
    Fießers Erstling
    Themenstarter

    Registriert
    12.2007
    Beiträge
    124
    Naja... jcarousel macht leider auch nicht all das was ich im Moment brauche...

  6. #6
    drp
    drp ist offline
    Ontario Avatar von drp
    Registriert
    04.2011
    Beiträge
    342
    Ja, du darfst die Variablen nicht in Anführungszeichen lassen, d.h. In dem setInterval("schleife(" + i + ", " + y + ")", 1);
    Viele Grüße von DRP - Homepage
     MacBook Air 11,6" |  iPhone 3GS 8GB |  iPad 2 16GB weiß Wi-Fi |  Magic Mouse | PC

  7. #7
    drp
    drp ist offline
    Ontario Avatar von drp
    Registriert
    04.2011
    Beiträge
    342
    setInterval("func()", time) führt die angegebene Funktion bzw. den angegebenen Code immer wieder nach Ablauf der time aus.
    D.h. setInterval("func()", 1000); führt die Funktion func() jede Sekunde (und damit unendlich!) aus.
    Viele Grüße von DRP - Homepage
     MacBook Air 11,6" |  iPhone 3GS 8GB |  iPad 2 16GB weiß Wi-Fi |  Magic Mouse | PC

  8. #8
    Fießers Erstling
    Themenstarter

    Registriert
    12.2007
    Beiträge
    124
    Geht leider immer noch nicht

    Ich habe das mit dem String und den Variablen berücksichtigt, aber es geht noch nicht... Woran kann's noch liegen? Soll ich die neue Version hochladen?

    lg
    nico

  9. #9
    drp
    drp ist offline
    Ontario Avatar von drp
    Registriert
    04.2011
    Beiträge
    342
    Ja. Oder wenn das online ist schick doch mal einen Link - ist einfacher.
    Viele Grüße von DRP - Homepage
     MacBook Air 11,6" |  iPhone 3GS 8GB |  iPad 2 16GB weiß Wi-Fi |  Magic Mouse | PC

  10. #10
    Fießers Erstling
    Themenstarter

    Registriert
    12.2007
    Beiträge
    124

Seite 1 von 3 123 LetzteLetzte

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •