JavaScript, Wie ändern Sie den hintergrund eines div-tag, alle x Sekunden
Ich versuche, um einige JavaScript-code, um den hintergrund zu ändern von zwei div-tags, alle X Sekunden. Hier ist mein code:
HTML
<div id="bg_left"></div>
<div id="bg_right"></div>
CSS
body{
height:100%;
}
#bg_left{
height:100%;
width:50%;
left:0;
position:fixed;
background-position:left;
}
#bg_right{
height:100%;
width:50%;
right:0;
position:fixed;
background-image:url(http://presotto.daterrawebdev.com/d/img/pp_hey_you_bg.png);
background-position:right;
}
JAVA SCRIPT
function carousel_bg(id) {
var bgimgs = [ 'pp_hey_you_bg.png', 'burningman_bg.png' ];
var img1 = bgimgs[id];
var img2 = bgimgs[id+1];
var cnt = 2;
$('#bg_left').css("background-image", "url(http://presotto.daterrawebdev.com/d/img/"+img1+")");
$('#bg_right').css("background-image", "url(http://presotto.daterrawebdev.com/d/img/"+img2+")");
id = id + 1;
if (id==cnt) id = 0;
setTimeout("carousel_bg("+id+")", 10000);
}
$(document).ready(function() {
carousel_bg(0);
});
Hintergrund-Bilder sollten verändert werden, zufällig, aber Sie nicht selbst ändern.
- Welche änderungen hast du Sie einfach machen? Bitte angeben, wenn andere, aktiv zu versuchen, daran zu arbeiten.
- Sorry. Ich habe die var img für img1 und fügte hinzu, eine weitere variable benannt und es img2. Ich habe auch die $(body).css("backgrou... zu $('#bg_left').css (""..und dazu noch eine Aktion für die #bg_right.
- Bitte nicht "bump" Ihre Frage, indem "UNGELÖST:" um den Titel. Ungelöste Fragen sind bereits visuell angezeigt.
- ok.. kein problem. Es bekam.
- So... nur versuchen zu verstehen, was hier passiert. Alles, was getan werden muss, bevor wir zu reden über das Thema mit dem code? Ich bin nicht sehr vertraut mit StackOverflow-Regeln, aber ich bin ok mit Ihnen.
- Es sieht aus wie Ihre Geige jetzt funktioniert... wenn ja, möchten Sie vielleicht annehmen, eine Antwort zu schließen, diese Frage (und verbessern Sie Ihre Akzeptanz-Bewertung).
Du musst angemeldet sein, um einen Kommentar abzugeben.
OK, ich sehe das Problem in deinem jsFiddle. Denn du bist die übergabe eines string zu
setTimeout()
string ausgewertet wird nur auf der obersten Ebene Rahmen. Aber, den Namen der Funktion, die Sie passierten, ist nicht auf der obersten Ebene Umfang (es ist in einer onload-Prozedur für das jsFiddle). Also, ich änderte die Art und Weise Ihre JS positioniert ist in der jsFiddle so ist es nun an der top-level-Bereich. Ich habe auch Feste die Logik für die Auswahl eines Bildes und arbeitet jetzt hier: http://jsfiddle.net/jfriend00/awVYP/Und hier ist eine gereinigte version, die nicht übergeben Sie eine Zeichenfolge an
setTimeout()
(ein viel besserer Weg, um javascript schreiben) vergeht eine lokale Funktion und ist mit einem Verschluss versehen, um zu verfolgen den aktuellen index: http://jsfiddle.net/jfriend00/LVGNN/Letzten Kommentare zu früheren Versionen, so dass der OP-code:
werden sollte:
oder noch schneller:
Auch, Ihre jsFiddle zeigt eine etwas seltsame Frage. Dein CSS ein hintergrund-Bild auf der HTML-tag, sondern Ihr javascript setzt einen semi-transparenten hintergrund Bild auf dem body-tag. Ist das wirklich das, was Sie wollen?
Zum testen Hinzugefügt habe ich ein anderes Bild auf das array, so dass wir ein Unterschied in der Sortierung.
Zwei änderungen hier:
Während dieser code ist in einer Schleife durch das array, es ist nicht zufällig. Das ist ein anderes Thema.
Für diejenigen, die nicht mit JQuery, tun Sie einfach Folgendes: