bonsoir,
voilà des heures que je cherche à récupérer la valeur d'un select pour l'assigner ensuite à une variable. Le formulaire, comme le tableau est généré dynamiquement.
L'objectif est de pouvoir faire en sorte que l'internaute choisisse une valeur afin de construire une grille ( de mot croisés) personnalisée.
Je précise que tout se passe dans le fichier Js, rien dans le html.
HTML
JAVASCRIPT
J'ai essayé de nombreuses possibilités, mais je n'ai rien trouvé qui aille.
Merci de vous pencher sur mon problème. Je débute en js, alors soyez indulgent
Modifié par lielos (04 May 2011 - 23:24)
voilà des heures que je cherche à récupérer la valeur d'un select pour l'assigner ensuite à une variable. Le formulaire, comme le tableau est généré dynamiquement.
L'objectif est de pouvoir faire en sorte que l'internaute choisisse une valeur afin de construire une grille ( de mot croisés) personnalisée.
Je précise que tout se passe dans le fichier Js, rien dans le html.
HTML
<body>
<div>
<p id="text_select_taille">Choisissez une taille pour votre grille et validez : </p>
</div>
<div>
<p id="instructions">Pour placer des cases noires, faites un clic droit sur la case voulue. Pour enlever une case noire, faites à nouveau un clic droit dessus.</p>
</div>
</body>
JAVASCRIPT
var taille;
var cellId=0;
function init(){
choixTaille();
initGrille(taille);
this.addEventListener('contextmenu',celluleNoire,true);
}
function choixTaille(){ // fonction créant une liste déroulante
var i;
var taille=0;// constitura le numéro à choisir pour construire sa grille
var formTaille = document.createElement("form");//création du formulaire
formTaille.setAttribute("name", "select_form");
formTaille.setAttribute("id", "choix_taille");
var createSelect = document.createElement('select');//création du select
createSelect.setAttribute("name", "select");
var opt = document.createElement('option');
opt.setAttribute("value", "1");//value par defaut
for(i=0;i<30;i++){//la taille de grille maxi est 30 cases de coté
taille = taille+1; //pour incrémenter la valeur de la liste déroulante de 1
opt = document.createElement('option');//chaque tour de boucle crée une balise option
opt.setAttribute("value", taille);
createSelect.appendChild(opt);
var txtNode = document.createTextNode(taille);//création d'un noeud texte
opt.appendChild(txtNode); //et ajout à la balise option en cours de création
}
formTaille.appendChild(createSelect); //ajout du select au formulaire
var valideForm = document.createElement('input');
valideForm.setAttribute("type", "submit");
valideForm.setAttribute("value", "créer !");
formTaille.appendChild(valideForm); //ajout du input au formulaire
var attachTo = document.getElementById('text_select_taille');
attachTo.appendChild(formTaille);//ajout du formulaire au paragraphe 'text_select_taille'
}
function initGrille(taille){
var i,j;
var table = document.createElement("table");
table.setAttribute("id", "grille");
//double boucle, imbriquée, crée le tableau
for(i=0;i<taille;i++){
var ligne = document.createElement("tr");
for(j=0;j<taille;j++){
var cellule = document.createElement("td");
cellule.setAttribute("class","blanc");
ligne.appendChild(cellule);
cellId= cellId+1;//va permettre d'attribuer un id à chaque case;
cellule.id = 'cell'+cellId;
}
table.appendChild(ligne);
}
document.body.appendChild(table);
}
function celluleNoire(event){
// on applique la classe 'noir' à la cellule ciblé
if(event.target.className == 'blanc'){
event.target.setAttribute("class","noir");
rien(event);//empeche l'ouverture de la fenetre contextuelle
}
// on applique la classe 'blanc' à la cellule ciblé
else if(event.target.className == 'noir'){
event.target.setAttribute("class","blanc");
rien(event);
}
}
function rien(event) {
event.preventDefault(); //annule l'évènement event
}
window.addEventListener('load',init,true);
J'ai essayé de nombreuses possibilités, mais je n'ai rien trouvé qui aille.
Merci de vous pencher sur mon problème. Je débute en js, alors soyez indulgent

Modifié par lielos (04 May 2011 - 23:24)