Compatibilité du Javascript sous IE6 et Mozilla ! - HTML/CSS - Programmation
Marsh Posté le 02-06-2005 à 16:54:19
C'est du vieux Javascript qui ne devrait plus etre utilisé.
Pour acceder a un objet de ton document tu as plein de mthodes comme :
document.getElementById, document.getElementsByTagName etc ...
Marsh Posté le 02-06-2005 à 17:01:41
http://www.mozilla.org/docs/dom/do [...] ml#1006715
et plus generalement :
http://www.mozilla.org/docs/dom/do [...] rtTOC.html
Marsh Posté le 02-06-2005 à 17:10:35
donc en gros pour modifier le fond d'une cellule ?
c'est plus:
champ.background = 'set_boules/boule_souris_click.gif';
je doit mettre quoi a la place ?
sachant que "champs" c un parametre d'entré d'une fonction et qui devrait etre "this".
Marsh Posté le 02-06-2005 à 17:14:14
est ce que si chaque element a un id du type 1 2 ... 48
je met document.getElementbyId("1" ).background ? ?
Marsh Posté le 02-06-2005 à 17:15:54
<div id="champ"></div>
document.getElementByID('champ').style.setProperty('background-color','pink','');
Marsh Posté le 02-06-2005 à 17:19:05
lol Waw !
Ca a bien changé en fait !
Merci beaucoup pour ton aide, je vais essayer des que possible ca :
document.getElementByID('champ').style.setProperty('background','source_de_limage.jpg','');
ca devrait marcher ?
Marsh Posté le 02-06-2005 à 17:27:45
non
style.setProperty('background-image','url(source_de_image)')
ou
style.backgroundImage = 'url(source_de_image)'
Faut que tu apprennes les CSS aussi
Marsh Posté le 02-06-2005 à 17:36:31
Faire gaffe au 3eme argument de setProperty (dont je me souviens plus la signification d'ailleurs) qui doit etre une chaine (nulle si pas utilisé)
Marsh Posté le 02-06-2005 à 17:40:16
D'ailleurs je viens de vérifier, setProperty n'est pas disponible dans MSIE, donc faut pas l'utiliser
Marsh Posté le 02-06-2005 à 18:50:22
A titre d'illustration, svp, qui peut m'indiquer l'équivalent moderne de :
document.forms["mon_formulaire"].elements[mon_bouton_radio](numero_d_index).checked = false;
("mon_formulaire" est directement le nom du formulaire, alors que mon_bouton_radio est une variable qui contient le nom d'un groupe de boutons radios parmi d'autres.)
Cette instruction périmée fonctionne très bien sous IE6, mais apparemmment pas du tout sous Firefox.
D'autres chose ont changé ? J'ai un doute sur la boucle
for (i = debut; i < fin; i++) {
qui me fait un peu n'importe quoi sous Firefox. (Mais qui marche bien sous IE6, bien sûr).
Je sais, c'est du vieux Javascript, mais moi aussi je suis vieux. Le modernisme m'échappe un peu.
PS : évidemment, il faut que cela fonctionne encore sous IE6.
Marsh Posté le 02-06-2005 à 18:56:14
tu met un id sur chaque case à cocher :
ex :
<input type="checkbox" id="cbox1">
<input type="checkbox" id="cbox2">
<input type="checkbox" id="cbox3">
et le code pour y acceder devient :
document.getElementById('cbox' + numero_d_index).checked = false;
Marsh Posté le 03-06-2005 à 08:48:40
putain ! que de problemes que de problemes !
Y a toujours un truc qui va pas niveau compatibilité !
Marsh Posté le 03-06-2005 à 10:56:07
je croi que j'ai du mal avec les css en effet !
et sui au passage de la souris je veux que le texte change de couleur , sachant que la balise font est identifiée par un id je met ca ?:
document.getElementById(id).style.font = 'color(white)';
Marsh Posté le 03-06-2005 à 10:56:53
non
document.getElementById(id).style.color = 'white';
Marsh Posté le 03-06-2005 à 11:01:36
merci Masklinn !
T'es vraiment le plus rapide de l'ouest pour répondre !
Marsh Posté le 03-06-2005 à 11:27:10
gatsusat a écrit : tu met un id sur chaque case à cocher : |
Il ne s'agit pas de checkbox mais de boutons radios.
Quelque chose du genre :
<input type="radio" id="choix1" value="salade">
<input type="radio" id="choix1" value="tomate">
<input type="radio" id="choix1" value="radis">
<input type="radio" id="choix2" value="rouge">
<input type="radio" id="choix2" value="vert">
<input type="radio" id="choix2" value="bleu">
<input type="radio" id="choix3" value="1000">
<input type="radio" id="choix3" value="2000">
<input type="radio" id="choix3" value="3000">
etc.
(ou
<input type="radio" name="choix1" id="choix" value="salade">
<input type="radio" name="choix1" id="choix" value="tomate">
<input type="radio" name="choix1" id="choix" value="radis">
etc. ?)
Je ne peux donc pas écrire dans ma fonction
'choix1' + numero_d_index,
car je cherche
choix1(numero_d_index)
ou
choix2(numero_d_index)
ou
choix3(numero_d_index)
etc.
Ce qui fonctionne en partie : (choix = 'choix1', ou 'choix2' ou 'choix3', etc.)
document.getElementById(choix).checked = false;
Sauf que ça ne marche que pour les boutons d'index 0. Donc seul le premier bouton du groupe est désélectionné.
document.getElementById(choix[numero_d_index]).checked = false;
ne marche pas. Message : document.getElementById(choix[numero_d_index]) has no properties
document.getElementById(choix(numero_d_index)).checked = false;
ne marche pas. Message : choix is not a function
document.getElementById(choix).options[numero_d_index].checked = false;
ne marche pas. Message : document.getElementById(choix).options[numero_d_index] has no properties
document.getElementById(choix).options[numero_d_index].checked = false;
ne marche pas. Message : document.getElementById(choix).options is not a function
etc.
Pour l'instant, j'ai plus d'imagination que d'efficacité.
Marsh Posté le 03-06-2005 à 13:23:23
Un id doit etre unique dans tout le document (ou page si tu preferes).
Marsh Posté le 03-06-2005 à 15:55:56
Merci. Je venais justement de le tester, et ça marche.
Objectif : classer diverses objets concurrents sans autoriser d'ex-aequos.
La solution à mon problème est donc :
<html>
<head>
<title>Classement</title>
<meta name="author" content="KiosqueC">
<script language="javascript"><!--
function ma_fonction(numero_question_en_cours, index_reponse) {
for (i = 1; i < 5; i++) {
if (i != numero_question_en_cours) {
bouton = "choix" + i + "_" + index_reponse;
if (document.getElementById(bouton).checked) {
document.getElementById(bouton).checked = false;
}
}
}
}
--></script>
</head>
<body>
<h1>Classement</h1>
<form name="classement" action="classement.html" method="post">
Classez par ordre de préférence : <br />
-1-----2------3-----4-------------<br />
<input type="radio" name="choix1" id="choix1_1" value="1" onClick=ma_fonction("1","1" )>
<input type="radio" name="choix1" id="choix1_2" value="2" onClick=ma_fonction("1","2" )>
<input type="radio" name="choix1" id="choix1_3" value="3" onClick=ma_fonction("1","3" )>
<input type="radio" name="choix1" id="choix1_4" value="4" onClick=ma_fonction("1","4" )>
Le rouge <br />
<input type="radio" name="choix2" id="choix2_1" value="1" onClick=ma_fonction("2","1" )>
<input type="radio" name="choix2" id="choix2_2" value="2" onClick=ma_fonction("2","2" )>
<input type="radio" name="choix2" id="choix2_3" value="3" onClick=ma_fonction("2","3" )>
<input type="radio" name="choix2" id="choix2_4" value="4" onClick=ma_fonction("2","4" )>
Le jaune <br />
<input type="radio" name="choix3" id="choix3_1" value="1" onClick=ma_fonction("3","1" )>
<input type="radio" name="choix3" id="choix3_2" value="2" onClick=ma_fonction("3","2" )>
<input type="radio" name="choix3" id="choix3_3" value="3" onClick=ma_fonction("3","3" )>
<input type="radio" name="choix3" id="choix3_4" value="4" onClick=ma_fonction("3","4" )>
Le bleu <br />
<input type="radio" name="choix4" id="choix4_1" value="1" onClick=ma_fonction("4","1" )>
<input type="radio" name="choix4" id="choix4_2" value="2" onClick=ma_fonction("4","2" )>
<input type="radio" name="choix4" id="choix4_3" value="3" onClick=ma_fonction("4","3" )>
<input type="radio" name="choix4" id="choix4_4" value="4" onClick=ma_fonction("4","4" )>
Le vert <br />
<input type="submit" value="Envoyer">
<input type="reset" value="Oups !">
</form>
</body>
</html>
Le paramètre name détermine les groupes de boutons. Il est commun à tout le groupe.
Le paramètre ID est unique pour chaque bouton.
Copiez le source et sauvez-le sous classement.html
Il fonctionne sous IE6 et Firefox.
Marsh Posté le 03-06-2005 à 16:42:14
Qu'est-ce que j'aimerai bien voir des gens comme ca plus souvent, il recopie le code à la fin. Il ne manquerai plus qu'il édite son premier post en mettant [RESOLU] devant son tire
Marsh Posté le 04-06-2005 à 14:50:05
plainsofpain a écrit : Qu'est-ce que j'aimerai bien voir des gens comme ca plus souvent, il recopie le code à la fin. Il ne manquerai plus qu'il édite son premier post en mettant [RESOLU] devant son tire |
Sauf que la question initiale n'est pas de moi. Je n'ai fait que prendre le train en marche avec un problème apparenté.
Nota : mon code réel est beaucoup plus compliqué. J'ai simplifié pour mettre en évidence la solution. C'était la moindre des choses, non ?
Marsh Posté le 02-06-2005 à 16:50:45
bonjour, voila j'ai un script qui marche sur ie6 mais absolument pas sous mozilla, voila le script:
var b = new Array(48);
var n=0;
var totale = 0;
for(c=0;c<=49;c++){
b[c]=0; }
function ClickOn(num,champ)
{
if (totale >5 && b[num]==0)
{
alert('Desolé, vous ne pouvez selectioner que 6 numeros');
}
else if(totale <= 6 && b[num]==0)
{
champ.background = 'set_boules/boule_souris_click.gif';
if(document.form_loterie.num.value=="" ) {document.form_loterie.num.value=num+"-"; }
else { document.form_loterie.num.value=document.form_loterie.num.value+num+"-"; }
b[num]=1;
totale++;
}
else if (b[num]==1)
{
champ.background = 'set_boules/boule.gif';
b[num]=0;
numero = num+"-";
var grille = document.form_loterie.num.value;
yop = grille.replace(numero, "" );
document.form_loterie.num.value = yop;
totale--;
}
}
function SourisOn(num,champ){
if(b[num]==0)
{
champ.background = 'set_boules/boule_souris_on.gif';
}
}
function SourisOut(num,champ){
if(b[num]==0)
{
champ.background = 'set_boules/boule.gif';
}
}
function doSubmit(bannerID){
if (!bannerID) { alert("Vous devez cliquer sur un bandeau pour valider votre partie." ); }
else if (totale !=6) { alert("Vous devez sélectionner 6 numéros." );}
else {
window.open('wait.php',"_blank",'width=290,height=250');
document.form_loterie.annonceur.value = bannerID;
document.form_loterie.submit();
}
}
function reset(){
document.form_loterie.num.value = "";
totale=0;
for (i;i<=49;i++)
{
document.i.background = 'set_boules/boule.gif';
}
}
Message édité par angel92 le 02-06-2005 à 16:51:36