bon voila, je suis entrain de dvp un moteur de recherche sur une base de donnee de personnel. et donc j ai besoin de mettre en place un systeme de formulaire afin que l administration puisse faire bien leur travail en faisant de jolie requete.

donc voila pour une ligne j utilise un petit script qui permet d'afficher les valeurs qui vont avec la recherche souhaite.

var valeurs = new Array();
valeurs[0] = new Array();
valeurs[1] = new Array("dr.", "mr.", "prof.","ms.","eng.");
valeurs[2] = new Array("1", "2", "3","5","6","9","13","15");


function verifChoixValue_0()
{ if (document.formul.choixType_0.value == "0"){ alert('Vous devez tout d\'abord choisir un type de recherche!'); document.formul.choixType_0.focus(); } }

function remplirValeurs_0(code)
{
var lesValeurs = valeurs[code];
if (code>0){
document.formul.choixValue_0.options.length = lesValeurs.length;
for (i=0; i<lesValeurs.length; i++){ document.formul.choixValue_0.options[i].value = lesValeurs[i]; document.formul.choixValue_0.options[i].text = lesValeurs[i]; }
document.formul.choixValue_0.options.selectedIndex = 0;
}else{ document.formul.choixValue_0.options.length = 1; document.formul.choixValue_0.options[0].value = 0; document.formul.choixValue_0.options[0].text = "-- choisissez une valeur"; }
}
bon ca marche tres bien pour une ligne.
Par la suite une personne peut avoir besoin de specifier plusieurs champ ainsi j ai utiliser un autre bou de script qui permet lui d ajouter et de suprimer des ligne avec appendchild et removechild

/* initialise le script */
function dtableInit() {
var table = document.getElementsByTagName('TABLE');
for ( var i = 0; i < table.length; i++ ) {
// on récupère tous les tableaux dynamiques
if ( table[i].className == 'dTable' ) {

var tbody = table[i].tBodies[0];
var newTr = tbody.rows[0].cloneNode(true);

// on masque la première ligne du tbody (la ligne de reference)
tbody.rows[0].style.visibility = "hidden";

// on en ajoute une
tbody.appendChild(newTr);
}
}
}

/* trouve le tag "parentTagName" parent de "element" */
function getParent(element, parentTagName) {
if ( ! element )return null;
else if ( element.nodeType == 1 && element.tagName.toLowerCase() == parentTagName.toLowerCase() )return element;
else return getParent(element.parentNode, parentTagName);
}
/* ajoute une ligne */
function addLigne(link) {
// 1. récuperer le node "TABLE" à manipuler
var td = link.parentNode;
var table = getParent(td,'TABLE');

// 2. on va manipuler le TBODY
var tbody = table.tBodies[0];

// 3. on clone la ligne de reference
var newTr = tbody.rows[0].cloneNode(true);
tbody.appendChild(newTr);

if ( document.all )
newTr.style.visibility = "visible"; // pour IE
else
newTr.style.visibility = "visible"; // pour Gecko

//on incremente le compteur de ligne
MaVariable++;
}
/* supprimer une ligne */
function delLigne(link) {
// 1. récuperer le node "TABLE" à manipuler
var td = link.parentNode;
var table = getParent(td, 'TABLE');

// 2. récuperer le TBODY
var tbody = table.tBodies[0];

// 3. Supprimer le TR
tbody.removeChild(getParent(td, 'TR'));
}
Voila donc ca aussi ca marche. Mais (ouai je fairai pas un post aussi gros si y avai pas de mais), effectivement ca m ajoute des lignes mais je ne voi pas vraiment comment assigner le 1 er script au ligne rajouter dans le second.


P.S. j a oublier de filer le code html
<tr>
<td>
<input type="radio" name="chx_0" value="OR" checked />OR
<input type="radio" name="chx_0" value="AND" />AND
<input type="radio" name="chx_0" value="NOT" />Not
</td>
<td>
<select name="choixType_0" onChange="remplirValeurs_0(this.options[this.selectedIndex].value);">
<option value="0" selected>-- choisissez un type de recherche</option>
<option value="1">Title</option>
<option value="2">Activitie</option>
</select>
</td>
<td>
<select name="choixValue_0" onFocus="verifChoixValue_0();">
<option value="0" selected>-- choisissez une valeur</option>
</select>
</td>
<td><a href="#" onclick="delLigne(this); return false;">Supp</a></td>
</tr>
bon dans ce cas la ce n est que la ligne 0 mais j ai un script qui rename et change les onchange et onfocus pour chaque ligne ajouter