yutfo
Messages postés2Date d'inscriptionmercredi 26 novembre 2008StatutMembreDernière intervention29 novembre 2008
-
26 nov. 2008 à 23:31
yutfo
Messages postés2Date d'inscriptionmercredi 26 novembre 2008StatutMembreDernière intervention29 novembre 2008
-
29 nov. 2008 à 00:59
Bonjour,
Je suis novice en javascript et j'ai hérité d'un script qui me pose problème avec Internet Explorer 7. Sous Firefox tout va bien. Ce script consiste à générer une liste de cases à cocher plus leur libellé représentant des sous domaines liés à un domaine. Ce dernier est sélectionné à partir d'une liste déroulante.
La liste de sous domaines (fonction du domaine) s'affiche correctement. J'arrive également à cocher les cases de sous-domaines qui m'intéresse. Par contre, lorsqu'il s'agit de tester le nombre de cases cochées, il considère qu'aucune case ne l'est. Je reprécise que sous Firefox tout se déroule parfaitement. D'autre part, ce script comporte innerHtml qui selon certaines sources ne renverrait pas toutes les informations. Ce que j'ai pu vérifier en faisant des tests. En effet sous IE7, je ne retrouve pas l'attribut "name" dans mon "input" contrairement à FF. On préconise d'essayer les standards DOM mais je n'ai très peu de notion la-dessus.
Le script en question est le suivant:
"<script language='javascript'>
$js_categories
function reloadSubCategory(idCate, divSubCate) {
var varCate = document.getElementById(idCate) ;
var varDivSubCate = document.getElementById(divSubCate) ;
Pour mes tests l'attribut 'name' en l'occurrence 'p_subcategory[]' m'est nécessaire car mes tests sont les suivants:
var p_subcategory = document.getElementsByName('p_subcategory[]') ;
var p_subcategory_count = 0 ;
for (i=0; i< p_subcategory.length; i++ ) {
if (p_subcategory[i].checked) p_subcategory_count++ ;
}
if(p_subcategory_count ==0){
alert("<?php echo "Il faut sélectionner au moins 1 sous-domaine";?>");
return false;
}
if(p_subcategory_count > 3){
alert("<?php echo "Il faut sélectionner 3 sous-domaines au plus ";?>");
return false;
}
Je vous remercie d'avance pour votre coup de pouce et je suis ouvert à tout nouveau script qui me permettrait de remplacer celui-ci.
PetoleTeam
Messages postés3426Date d'inscriptionlundi 26 décembre 2005StatutMembreDernière intervention14 janvier 201117 28 nov. 2008 à 12:28
Bonjour,
la méthode préconisée par IExplorer est la suivante
The NAME attribute cannot be set at run time on elements
dynamically created with the createElement method. To create an element with a
NAME attribute, include the attribute and value when using the createElement
method.
en d'autre termes faire comme ceci
var cb =
document.createElement("
c'est très moyen car ça plante avec
les autres navigateurs
Comment faire ?
cb.name = 'p_subcategory[]';
ne marche pas sous
IExplorer , car on défini une propriété et non
un attribut, il n'empêche que ça marche avec les autres.
Il apparaît
donc plus intéressant de passer par setAttribute, seulement voila
cb.setAttribute
('name','p_subcategory[]');
plante encore sous IExplorer, mais pas avec les autres...
On
pète un câble...
mais NON car l'attribut name pour IExplorer est en fait NAME et oui en majuscule...
donc faire
cb.setAttribute
('NAME','p_subcategory[]');
BINGO ça marche, enfin normalement
IExplorer est très subtil en ce qui
concerne les attributs, entre autres d'ailleurs.
Pour être presque
complet sur ton post
<table bgcolor ="#e6effe" border="0" cellpadding="5" cellspacing="0" width="100%">----, On préconise d'essayer les standards
DOM</td>
</td></tr></tbody></table>alors il te
faut créer tes lignes et colonnes avec les fonctions insertRow() et insertCell() entre autres...
yutfo
Messages postés2Date d'inscriptionmercredi 26 novembre 2008StatutMembreDernière intervention29 novembre 2008 29 nov. 2008 à 00:59
Merçççççççççiiiiiiiii Petole team
j'ai essayé avec setAttribut mais je n'ai jamais pensé à mettre l'attribut 'name' en majuscule.
J'ai fait les modifications et tout fonctionne à merveille, encore merçi pour tes lumières