11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour tout le monde,

Après avoir résolu mon problème d'hier, j'en ai maintenant un autre.
Je vous explique :
J'ai un tableau de liste déroulante, à l'ouverture de la page elles n'apparaissent pas.
Je voudrais qu'en plus de ne pas apparaitre, elles soient désactivées !
De plus, il faudrait que lorsque l'on clique sur la case du tableau la liste déroulante apparaisse (ca, ca marche) et qu'elle s'active (ca ca marche pas)

je vous montre mon code :

<html>
<head>
 <script>
function affiche(obj){
        obj.style.visibility = "visible";
}

function init(){
    for(var i=0;i<3;i++){
        for(var j=0;j<3;j++){
            var id = 'contenu_'+i+'_'+j;
            var test = 'voyant_'+i+'_'+j;
            document.getElementById(id).style.visibility = "hidden";
            //document.getElementById(test).disabled="true";
        }
    }
}

function gestionListe(obj,divcote,divdebut){
    obj.disabled="false";
    divcote.innerHTML = obj.options[obj.selectedIndex].value;
    divdebut.style.visibility = "hidden";
}

function menuOver(this_){
    if(this_.style.backgroundColor=='gray'){
        this_.style.backgroundColor='white';
    }
    else
        this_.style.backgroundColor='gray';
}
</script>
<style>
    td.colorie a:hover {
        background-color:#FG0612;
    }
</style>
</head>
<body onload="init();">
<form name="test_plan" id="test_plan" method="POST" action="#">
<?php
echo '<table border="1">';
        for($i=0;$i<3;$i++){
            echo '<tr>';
            for($j=0;$j<3;$j++){
                $divSelect = 'contenu_'.$i.'_'.$j;
                $divAffichage = 'contenu2_'.$i.'_'.$j;
                $select = 'voyant'.$i.'_'.$j;
                echo '<td onclick="affiche('.$divSelect.');" onmouseover="menuOver(this);" onmouseout="menuOver(this);"><div id="contenu_'.$i.'_'.$j.'" name="contenu_'.$i.'_'.$j.'">
                      <select id="voyant'.$i.'_'.$j.'" name="voyant'.$i.'_'.$j.'" onchange="gestionListe(this,'.$divAffichage.','.$divSelect.');">';
                           echo '<option>1</option>';
                           echo '<option>2</option>';
                     echo '</select>
                    </div><div id="contenu2_'.$i.'_'.$j.'" name="contenu2_'.$i.'_'.$j.'"></div></td>';
           }         
           echo '</tr>';
        }
        echo '</table>';?>
         <input type="submit" name="valid" id="valid"/>
        </form>     
        <?php 
            //if(isset($_POST['valid'])) 
                var_dump($_POST);
        ?>
        </body>
       
</html>

Pour conclure, en gros : activation et désactivation de la liste --> marche pas !

Merci de votre aide !
Modifié par asquel78 (06 Jul 2007 - 11:48)
Salut asquel78,


obj.disabled="false";


Un Boolean n'est pas un String Smiley cligne
Ecris plutôt :


obj.disabled=false;


[EDIT] j'oubliais, l'événement onchange d'un objet select ne se déclenche qu'en cas de modification du selectIndex. Dans ton cas, si l'objet est disabled par défaut, onchange ne sera jamais activé par l'utilisateur Smiley smile

@plouche
Modifié par Ze Nenex (06 Jul 2007 - 14:39)
merci mais ca ca marche Smiley lol
le fait que disabled soit un booléen ne change rien étant donné que c'est une propriété html ...
Bref là n'était pas la question !
Même si le problème ne vient pas de là (et j'en doute, du moins sur firefox), un boolean reste un boolean Smiley smile

Sinon j'ai édité mon précédent post.
Quand tu fais

myselectobj.disabled = "true";

tu changes sont état car effectivement, disabled n'est pas false, il est autre (là, un String "true"). Et un string non vide correspond au Boolean true.
Par contre, en refaisant après :

myselectobj.disabled = "false";

L'état ne change pas. En effet, l'objet est toujours disabled car il n'est pas false, c'est toujours un String ("false") non vide, donc un Boolean true
Modifié par Ze Nenex (06 Jul 2007 - 14:48)