2017-10-10 1 views
0

J'essaie de définir une image d'arrière-plan à un div avec JQuery. Cela fonctionne s'il y a plus d'une image mais cela ne fonctionne pas s'il y a un seul img.JQuery ne définit pas l'image d'arrière-plan pour div la première fois

for(var i = 0; i<offers.length; i++) 
{ 
    var offer = offers[i]; 
    var photo = photos[i]; 
    $('.img-product').css("background-image", "url("+photo+")"); 
    $('.img-product').css("background-size", "100% 100%"); 
    ... 
} 

J'ai essayé de la valeur de photo « d'alerte » avant et après $('.img-product').css("background-image", "url("+photo+")"); déclaration et il fonctionne très bien.

Ceci est le résultat quand il y a plus d'une offre

This is the result when there are more then one offer

Ceci est le résultat lorsque la recherche retourne un seul élément

This is the result when search returns a single item

+0

Pouvez-vous vérifier le chemin de l'image? puisque dans les deux captures d'écran, la même image n'est pas affichée? – Rex

+0

Le chemin est corrent dans les deux cas. Si je recherche seulement l'honneur 9 (l'élément dans la capture d'écran a img) l'arrière-plan n'est pas défini de toute façon – AxeOwl

+0

Attendez-vous que le chargement de la page se termine avant que votre code ne soit exécuté? – theGleep

Répondre

0
$(document).ready(function() { 
      code... 
      $('input#search_button').click(function (e) { 
      ..code 
      e.preventDefault(); 
      e.stopPropagation(); 
       $.ajax({ 
       ajax call.. 
       success: function (data) { 
        ..code 
        for(var i = 0; i<offers.length; i++) 
      { 
       var offer = offers[i]; 
       var photo = photos[i]; 
       $('.img-product').css("background-image", "url("+photo+")"); 
       $('.img-product').css("background-size", "100% 100%"); 
       ... 
      } 
} 
)}; 
)}; 

When I search only one item

+0

car le contrôleur php envoie à un double tableau ajax avec une réponse json. offre tableau et tableau de photo. Je dois donc les obtenir par tableau de données. Mais tout le client-contrôleur fonctionne bien. Je l'ai testé – AxeOwl

+0

pourriez-vous l'expliquer mieux? Toutes les variables sont insérées dans les tableaux correcly. Je les ai imprimés par php et aussi par js. – AxeOwl

+0

avant--> https: //...amazonaws.com/.../bcaa09bc8df92c78a70a07ae85973c87.png recherche-results.js: 81 après--> https: //.... amazonaws.com/ .. ./bcaa09bc8df92c78a70a07ae85973c87.png recherche-results.js: 79 before--> https: //....amazonaws.com/.../a3621f6036e436b9aebf486fe7e51048.jpeg recherche-results.js: 81 après -> https: //.... amazonaws.com/.../a3621f6036e436b9aebf486fe7e51048.jpeg – AxeOwl

0
var strong = document.createElement("strong"); 
      var founds_nbr = document.createTextNode(offers.length); 
      var founds_txt = document.createTextNode(" offerte trovate"); 
      strong.appendChild(founds_nbr); 
      founds.appendChild(strong); 
      founds.appendChild(founds_txt); 
      for(var i = 0; i<offers.length; i++) 
      { 
       var photo = photos[i]; 
       var offer = offers[i]; 

       var a = document.createElement("a"); 
       var article = document.getElementById("offer"); 
       var img_div = document.createElement("div"); 
       var container = document.createElement("div"); 
       var name = document.createElement("h4"); 
       var price_div = document.createElement("div"); 
       var offer_price = document.createElement("h1"); 
       var old_price = document.createElement("span"); 
       var expired_time = document.createElement("span"); 
       var title_text_node = document.createTextNode(offer.name); 
       var price_text_node = document.createTextNode(offer.price); 
       var old_price_text_node = document.createTextNode("35,00"); 
       var deadline_text_node = document.createTextNode(offer.deadline); 


       a.setAttribute("href","ProductPage/"+offer.id_offer); 
       /*article.setAttribute("class", "offer clearfix"); 
       article.setAttribute("id", "offer");*/ 
       article.setAttribute("style","visibility: visible"); 
       img_div.setAttribute("class", "img-product"); 
       container.setAttribute("class", "container-right clearfix"); 
       name.setAttribute("class", "offer-title"); 
       price_div.setAttribute("class", "price clearfix"); 
       offer_price.setAttribute("class", "offer-price"); 
       old_price.setAttribute("class", "del-price"); 
       expired_time.setAttribute("class", "expiredtime"); 
       $('.img-product').css({"background-image":"url("+photo+")", "background-size":"100% 100%"}); 
       console.log($('.img-product')); 
       name.appendChild(title_text_node); 

       offer_price.appendChild(price_text_node); 

       old_price.appendChild(old_price_text_node); 

       expired_time.appendChild(deadline_text_node); 
       price_div.appendChild(offer_price); 
       price_div.appendChild(old_price); 

       container.appendChild(name); 
       container.appendChild(price_div); 
       container.appendChild(expired_time); 

       article.appendChild(img_div); 
       article.appendChild(container); 

       a.appendChild(article); 

       var container = document.getElementById("container"); 
       container.appendChild(a); 
      } 

@headmax

+0

var photos = data [1]; var offres = données [0]; – AxeOwl