Changer la couleur d'une DIV par onkeyup sur un champ text [Résolu]

Signaler
Messages postés
4
Date d'inscription
samedi 9 octobre 2004
Statut
Membre
Dernière intervention
4 mars 2010
-
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
-
Bonjour,

Je suis pas tres à l'aise en Javascript et j'ai codé une toute petite fonction qui marche comme prévue sous IE et FF mais qui genere une erreur sous ie8: 'Valeur de propriété non valide'

Ma fonction permet d'appliquer une couleur a une div en fonction du contenu du champ text. (et ce pour plusieurs divs et champs)*

voici:



la div a colorier:
 


et la fonction:
function attribcolor(str){
var divstr = str+'_div';
var color = document.getElementById(str).value;
document.getElementById(divstr).style.backgroundColor= color;
}


L'erreur 'Valeur de propriété non valide' intervient selon IE sur la ligne:
var color = document.getElementById(str).value;


Merci pr votre aide!

5 réponses

Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
14
Bonjour,
L'erreur 'Valeur de propriété non valide' intervient selon IE sur la ligne:
quand la couleur n'est pas au format #000000 ou #000 IE refuse cette valeur
dans ce cas comme le onkeyup entraîne fatalement un moment ou le format ne sera pas correct pour IE, mets un try{}catch(e){} pour contourner le problème...
function attribcolor(str){
  var divstr = str+'_div';
  var color = document.getElementById(str).value;
  try{
    document.getElementById(divstr).style.backgroundColor = color;
  }
  catch(e){}
}

;O)
Messages postés
1771
Date d'inscription
vendredi 9 mai 2008
Statut
Modérateur
Dernière intervention
20 novembre 2020
108
met une alert pour voir ce que retourne document.getElementById(str).value;

function attribcolor(str){
var divstr = str+'_div';
alert(document.getElementById(str).value)
var color = document.getElementById(str).value;
document.getElementById(divstr).style.backgroundColor= color;
}
Messages postés
4
Date d'inscription
samedi 9 octobre 2004
Statut
Membre
Dernière intervention
4 mars 2010

ok merci et comme prevu ca me sort en alerte le code couleur hexa: #AEB8D
Mais en y regardant avec mes 2 yeux, j'ai compris que c'est la ligne suivante qui pose un probleme a IE, bien que cela fonctionne.

Et j'ai donc suivi ton conseil en collant une alerte

alert(document.getElementById(divstr).value);

et la ca me retourne bien 'undefined'. Comment je peux utiliser cette variable? A priori donc,

var divstr = str+'_div';

n'est pas correct, par quoi le remplacer?
Merci de votre patience
Messages postés
4
Date d'inscription
samedi 9 octobre 2004
Statut
Membre
Dernière intervention
4 mars 2010

Alors la , un grand merci! Ca marche, c'est magnifique impec!!!
Résolu!
Vive la pétrole Team, la planche a voile et les filles en bikini!

... et mort à IE

;)
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
14
Bonjour,
... et mort à IE
...sur ce coup la sa réaction est à mon sens correcte, il te prévient plutôt que de ne rien faire et de ne rien dire.
Je concèdes que le message est un peu light mais 'Valeur de propriété non valide' reste clair...
;O)