2017-10-15 24 views
0

J'essaie de mettre à jour dynamiquement les couleurs d'arrière-plan de certains éléments en utilisant ajax, jsp et un appel de servlet. J'ai inclus mes fonctions js et aussi une capture d'écran de mon journal de servlet et console. Le code exécute toutes les lignes, mais rien ne change sur le front end. Vraiment apprécier l'aide! J'ai également essayé de faire une autre fonction de JS pour gérer les changements de bg mais cela n'a pas aidé du tout.Modification dynamique de la couleur d'arrière-plan de tous les éléments html avec la même classe défaillante

 <script> 
     function validate() { 
       console.log("hello"); 
       var xhttp = new XMLHttpRequest(); 
       xhttp.open("GET", "/"+window.location.pathname.split("/")[1]+"/HomeServlet?inputName=" + document.searchform.search.value, false); 
       xhttp.send(); 
       if (xhttp.responseText.trim().length > 0) { 
        console.log("in if statement " + xhttp.responseText); 
        var str = xhttp.responseText; 
        var result = str.split(" "); 
        console.log("str " + str + " - result: " + result + " result size = " + result.length); 
        for(var i = 0; i < result.length; i++) { 
         console.log("in first loop"); 
         console.log("value:" + result[i]); 
         elements = document.getElementsByClassName(result[i]); 
         console.log("elements: " + elements.length); 
         for (var j = 0; j < elements.length; j++) { 
          console.log("in the loop"); 
          //elements[j].style.backgroundColor = "red"; 
          changeBg(elements[j]); 
         } 
        } 
       //return false; 
       } 
       return true; 
      } 
     function changeBg(element) { 
       alert(window.getComputedStyle(element).backgroundColor); 
       element.style.color = "red"; 

      } 
     </script> 

Dans mon navigateur, ma console lit ce qui suit prouve que le code est en cours d'exécution chaque ligne, inclus la sortie de la boîte d'alerte mais pas changer le element.style.color ou backgroundColor depuis que je l'ai essayé à la fois.

+0

Vous modifiez la couleur * text * ('element.style.color') à la place de la couleur * background * element.style.backgroundColor' dans changeBg() – FluffyKitten

Répondre

0

s'il vous plaît utiliser

element.style.backgroundColor

au lieu de

element.style.color

parce style.color est de changer la couleur de police, pas pour la couleur de fond

0

Je pense que la meilleure solution sera l'ajout de style avec de nouvelles couleurs pour les classes.

var counter = 0; 
 
\t \t function changeBG(){ 
 
\t \t \t counter++; 
 
\t \t \t var css = '.testBGclasss { background: '+(counter%2?'red':'blue')+'; }', 
 
\t \t \t \t head = document.head || document.getElementsByTagName('head')[0], 
 
\t \t \t \t style = document.createElement('style'); 
 

 
\t \t \t style.type = 'text/css'; 
 
\t \t \t if (style.styleSheet){ 
 
\t \t \t style.styleSheet.cssText = css; 
 
\t \t \t } else { 
 
\t \t \t style.appendChild(document.createTextNode(css)); 
 
\t \t \t } 
 

 
\t \t \t head.appendChild(style); 
 
\t \t }
<html> 
 
<head></head> 
 
<body> 
 
\t <div class="testBGclasss"> 
 
\t \t <h1>Some text<h1> 
 
\t </div> 
 
\t <input type="button" value="change background" onclick="changeBG()"/> 
 
\t </body> 
 
</html>

0

merci pour l'aide. J'ai fini par comprendre. Il s'avère que vous ne pouvez pas conserver dynamiquement les parties d'un formulaire modifiées.