Bilder bei jquery/JavaScript nach bestimmter zeit austauschen?

3 Antworten

Warum einfach, wenn es auch Umständlich geht? ;)

Ganz ohne jquery...

<script>  
  function start_action()
  {      //ändere Bild
      setTimeout(function(){document.getElementById("myImg").src = "bild2.jpg"}, 3000);
        //Wechsle zu neuer Seite
      setTimeout(function(){location.replace("https://www.w3schools.com")}, 6000);      
  }
</script>

<body>
   <img id="myImg" src="bild1.jpg" alt="Smiley face" width="100px" height="auto"><br>
   <BUTTON onclick="start_action()">run</BUTTON>
</body>


ich habe mal zur Demonstration kürzere Zeiten gewählt.

Beide Timeouttimer laufen unabhängig voneinander, so kannst Du die Zeiten für die Aktionen wählen wie Du möchtest, ohne irgendwelche Zählerei.

Einfach sagen was wann passieren soll, und es geschieht dann auch.

Bild ändern: https://www.w3schools.com/jsref/prop_img_src.asp

Timeout: https://www.w3schools.com/jsref/met_win_settimeout.asp

Seite wechseln:https://www.w3schools.com/jsref/met_loc_replace.asp


Kieselsaeure  14.05.2018, 15:52

>>Ganz ohne jquery...

+rep

0

Snook hat da etwas ganz gutes "gebastelt".

Im HTML Code machst du ein <DIV> und wirfst dort alle Bilder mit einem <IMG> Tag rein:

<div class="fadein">
  <img src="DeinBild1.jpg">
  <img src="DeinBild2.jpg">
  <img src="DeinBild13.jpg">
</div>

Das CSS sieht so aus:

.fadein { position:relative; width:500px; height:332px; }
.fadein img { position:absolute; left:0; top:0; }

Dann musst du nur noch dieses Javascript erstellen:

function bntCLICK() {
    $('.fadein img:gt(0)').hide();
    setInterval(function(){
      $('.fadein :first-child').fadeOut()
         .next('img').fadeIn()
         .end().appendTo('.fadein');}, 
      30000);
};

Und schon hast du eine simple Slideshow.

Um diese mit dem Button zu starten:

<input id="clickMe" type="button" value="clickme" onclick="btnCLICK();" />

Erzesel  14.05.2018, 20:24

Snook braucht jedoch fremde Bibliotheken: jQwery... mal wieder

Erzesel macht das ganz einfach mit Köpfchen und ganz normalem Javascript,
kann sogar Bilder unterschiedlicher Größe ohne Verzerrung handeln.

...während Snook wohl auf gleiche Bildgröße achten muss...

meine Variante : (sieht nur etwas mehr aus weil ich die Kommentare drin habe und die Bilder anpasse)

<style>
.slides {/* mach  mit dem div-container  was  die  gefällt*/}
.slides img 
{ 
  position: absolute; 
  width: 600px;    /*Bildgröße festlegen , Wichtig, wenn die Bilder nicht wirklich die gleiche Größe  haben*/
  height: 400px;
  object-fit: cover;  /*zurechtschneiden... passt immer  ohne Verzerrung  in  die vorgegeben  Bildgröße  ab Chrome 31.0 , IE Edge 16.0, Firefox 36.0  */
  transition: opacity 3s; /*Zeit  für  die  überblendung*/
  opacity: 0;
}
.slides img:first-child 
{ 
  z-index: 2;
  opacity: 1;
}
.slides img:last-child 
{
  z-index: 1;
  opacity: 1;
}
</style>

<script>
 //wenn Du  die nächste Auscommentierung  wegmachst  kannst  Du  auf  den Button weglassen...
//setInterval(nextSlide, 8000)

function nextSlide() {
  if (typeof currentElement == "undefined")
  {     // function  die  das  erste DOM-Element zurückgibt das dem  angegebenen Style entspricht.
      var currentElement = function(selector) { return document.querySelector(selector); }
  } 
  currentElement(".slides").appendChild(currentElement(".slides img:first-child"));
};
</script>

<body>
 <BUTTON onclick="setInterval(nextSlide, 8000)">run Slideshow</BUTTON>
<div class="slides">
  <imhttps://cdn.pixabay.com/photo/2016/12/12/09/43/volkerschlachtdenkmal-1901120_960_720.jpgjpgjpgjpg">
  <img src="https://cdn.pixabay.com/photo/2018/05/11/20/05/leipzig-3391527_960_720.jpg">
  <img src="https://cdn.pixabay.com/photo/2017/06/10/00/09/old-town-hall-2388652_960_720.jpg">
  <img src="https://cdn.pixabay.com/photo/2017/01/04/21/00/new-years-eve-1953253_960_720.jpg">
</div>
</body>


2
timlg07  15.05.2018, 15:39
@Erzesel

Hä warum normales JS verwenden wenn es auch mit jQuery geht? xD

0
Erzesel  15.05.2018, 18:16
@timlg07

...weil jqery etwas Fremdes ist? (etwa wie ein Holzbein) Ich bin zwar nicht paranoid, aber wenn mal jemand auf die Idee kommt die jqueryserver abzuschießen sind all die hübschen jqery belasteten Seiten nur noch Müll.

Außerdem sieht jqery-Code irgendwie unästhetisch aus.

Ganz früher als ich anfing zu programmieren sagte mir mal ein alter Pascalprogrammierer, man sieht schon an der Optik ob Code etwas taugt ohne auch nur eine Zeile gelesen zu haben. Das muss so symmetrisch sein wie ein Gedicht.

jqery sieht für mich immer aus wie ein Katzenklo , irgendwie zusammen gescharrt und keiner weiß mehr was unter der Oberfläche lauert...

Wenn ich etwas schreibe egal ob in Pascal , Batch, Javascript oder einer anderen Sprache kann ich jedem Schritt für Schritt erklären was welche Anweisung tut. Da jquery in Javascript geschrieben ist gibt es nichts was sich nicht auch ohne diesen Umweg regeln ließe.

Die wenigsten Leute, welche jqery einbauen, wissen was der Code tut... google was Du brauchst und dann Copy und Paste... und wenn es nicht so richtig läuft schmeiße den Helfern bei Stackoverflow , Superuser oder auch hier den Kram mit einer grammatisch einigermaßen unverständlichen Fragestellung vor die Füße .

1

Du kannst die IMG src anpassen.

$('#img').attr('src', 'AndereURL');

Oder du lädst alle Bilder vor und passt dann "visible" an.

$('#img1').hide();
$('#img2').show();


Kieselsaeure  14.05.2018, 12:03

Letzteres wäre für einen flüssigen Übergang empfehlenswerter.

0