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) ;
cate_id = varCate.options[varCate.selectedIndex].value ;
//alert (arr_categories[cate_id]) ;
varDivSubCate.innerHTML = ' ';
var t = document.createElement('table') ;
for (var i= 0; i< arr_categories[cate_id].length; i++) {
var tr = document.createElement('tr') ;
tr.height='20' ;
var td = document.createElement('td') ;
td.align = 'center' ; td.setAttribute ('width','30');
var cb = document.createElement('input') ;
cb.type='checkbox' ;
cb.name= 'p_subcategory[]' ;
cb.value = arr_categories[cate_id][i][0] ;
cb.id= 'p_subcategory['+cb.value+']' ;
td.appendChild(cb);
tr.appendChild(td);
var td = document.createElement('td') ;
td.align = 'left' ;
td.nowrap = 'yes' ;
td.setAttribute ('width','*');
var lb = document.createElement('label') ;
lb.setAttribute('for','p_subcategory['+arr_categories[cate_id][i][0]+']') ;
lb.innerHTML =arr_categories[cate_id][i][1];
//td.innerHTML = '<label for='+cb.value+']>'++'</label>';
td.appendChild(lb);
tr.appendChild(td);
t.appendChild(tr) ;
}
alert(t.innerHTML) ;
//varDivSubCate.innerHTML = t.outerHTML ;
varDivSubCate.innerHTML ='<table cellpadding=0 cellspacing=0>' + t.innerHTML + '</table>';
}
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.