Changer la couleur d'une DIV par onkeyup sur un champ text

Résolu
drijnou Messages postés 4 Date d'inscription samedi 9 octobre 2004 Statut Membre Dernière intervention 4 mars 2010 - 22 févr. 2010 à 18:39
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 - 5 mars 2010 à 12:46
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

PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 17
3 mars 2010 à 19:53
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)
3
@karamel Messages postés 1855 Date d'inscription vendredi 9 mai 2008 Statut Modérateur Dernière intervention 18 avril 2024 153
23 févr. 2010 à 21:08
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;
}
0
drijnou Messages postés 4 Date d'inscription samedi 9 octobre 2004 Statut Membre Dernière intervention 4 mars 2010
23 févr. 2010 à 22:08
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
0
drijnou Messages postés 4 Date d'inscription samedi 9 octobre 2004 Statut Membre Dernière intervention 4 mars 2010
4 mars 2010 à 17:30
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

;)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 17
5 mars 2010 à 12:46
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)
0
Rejoignez-nous