Auteur : Boumeur Domaines : recherche dans un tableau html Description :
mets en surbrillance les lignes ( et la / les cellule(s) ) de resultats d'une recherche sur un tableau html
function decortique(table,search)
{
///recherche
var me="^.*"+search+"+.*$";
var model=new RegExp(me);
//tableau
var tabTo=document.getElementById(table);
//couleur par defaut respectivement des lignes et des cellules
var defaultRowColor=tabTo.rows[0].style.backgroundColor;
var defaultCellColor=tabTo.rows[0].cells[0].style.backgroundColor;
//couleur si resultat trouvé, pour respectivement : les lignes et les cellules
var rowFoundColor="#0088FF";
var cellfoundColor="#11FF22";
var currentRow,currentCell,currentTextNode;// ligne courante , cellule courante , textcourant
for(var i=0;i<tabTo.rows.length;i++)//pour chaque lignes
{
currentRow=tabTo.rows[i];
for(var c=0;c<tabTo.rows[i].cells.length;c++)//chaque cellules
{
currentCell=tabTo.rows[i].cells[c];
currentTextNode=getText(currentCell);
if(model.test(currentTextNode))
{
currentRow.style.backgroundColor=rowFoundColor;
currentCell.style.backgroundColor=cellfoundColor;
}
}
}
}
function getText(currentCell)
{
return currentCell.childNodes[0].nodeValue;
}
Exemple d'utilisation :
<html>
<head>
<script language="javascript">
function decortique(table,search)
{
///recherche
var me="^.*"+search+"+.*$";
var model=new RegExp(me);
//tableau
var tabTo=document.getElementById(table);
//couleur par defaut respectivement des lignes et des cellules
var defaultRowColor=tabTo.rows[0].style.backgroundColor;
var defaultCellColor=tabTo.rows[0].cells[0].style.backgroundColor;
//couleur si resultat trouvé, pour respectivement : les lignes et les cellules
var rowFoundColor="#0088FF";
var cellfoundColor="#11FF22";
var currentRow,currentCell,currentTextNode;// ligne courante , cellule courante , textcourant
for(var i=0;i<tabTo.rows.length;i++)//pour chaque lignes
{
currentRow=tabTo.rows[i];
for(var c=0;c<tabTo.rows[i].cells.length;c++)//chaque cellules
{
currentCell=tabTo.rows[i].cells[c];
currentTextNode=getText(currentCell);
if(model.test(currentTextNode))
{
currentRow.style.backgroundColor=rowFoundColor;
currentCell.style.backgroundColor=cellfoundColor;
}
}
}
}
function getText(currentCell)
{
return currentCell.childNodes[0].nodeValue;
}
//Fonction uniquement la pour le test
function getTab(tabID)//prend en parametre un id de tableau
{
var tab=document.getElementById(tabID);
var nblignesVoulue=500;//NOMBRE DE LIGNES A GENERER
var nbcell=tab.rows[0].cells.length;
var nbboucle=nblignesVoulue*nbcell;
ll=document.forms[0].nbligne;
//Uniquement pour le test, et pour eviter de taper 2000 lignes comme ça, a "la main" ;)
var lettre=new Array(
"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","x","y","z"
);
var str,index,finalst;
finalst='<tr>\n';
for(var u=1;u<nbboucle;u++)
{
str="";
for(var b=0;b<15;b++)
{
index=Math.round(Math.random()*24);
str+=lettre[index];
}
finalst+="<td>"+str+"</td>\n";
if(u%tab.rows[0].cells.length==0 && u!=nbboucle)
{
finalst+="</tr><tr>\n";
}
}
finalst+="</tr>";
tab.innerHTML+=finalst;
}
</script>
</head>
<body style="padding-top:180px;">
<form id="ff">
<center>
<form style="display:inline;" name="searcheur">
<input type="text" name="ch"/><button onclick="decortique('test',document.searcheur.ch.value);" type="button">
Rechercher
</button>
</form>
double click sur le tableau pour generer des lignes.
<table border="3" id="test" ondblclick="getTab(this.id);">
<tr>
<th>
nom
</th>
<th>
prenom
</th>
<th>
date naissance
</th>
<th>
sports
</th>
<th>
ville
</th>
<th>
cp
</th>
<th>
adresse
</th>
<th>
AGE
</th>
</tr>
</table>
</center>
</body>
</html>
__________________________
la FAQ javascript :
http://www.forum.moteurprog.com/?url=FAQ.php&langage=Javascript
mon site préféré sur le DHTML
http://www.dhteumeuleu.com/
Auteur : ko ni shoa Domaines : traitement de nombres Description : j'ai remarqué qu'il n'existait pas de méthode en javascript pour retourner le plus grand ou le plus petit d'une série de plus de deux nombres. voilà donc une fonction utile : elle comprend deux arguments, le premier ("max" ou "min") indique si l'on veut avoir l'extrème inférieur ou supérieur, et le second est un tableau composé des nombres que vous voulez traiter.
le code :
function compare(type,tab) {
var result
var tmp = new Array()
var cl = 0
for(i = 0; i < tab.length; i ++) {
cl = 0
for(y = 0; y < tab.length; y ++) {
if(type == "max") {
tmp[y] = Math.max(tab[i],tab[y])
}
if(type == "min") {
tmp[y] = Math.min(tab[i],tab[y])
}
}
for(j = 0; j < tab.length; j ++) {
if(tmp[0] != tmp[j]) {
++ cl
}
}
if(cl == 0) {
result = tmp[0]
}
}
return result
}
et un petit exemple (si c'est bien utile..) :
<script language = "javascript">
function compare(type,tab) {
var result
var tmp = new Array()
var cl = 0
for(i = 0; i < tab.length; i ++) {
cl = 0
for(y = 0; y < tab.length; y ++) {
if(type == "max") {
tmp[y] = Math.max(tab[i],tab[y])
}
if(type == "min") {
tmp[y] = Math.min(tab[i],tab[y])
}
}
for(j = 0; j < tab.length; j ++) {
if(tmp[0] != tmp[j]) {
++ cl
}
}
if(cl == 0) {
result = tmp[0]
}
}
return result
}
document.write('<html><title>comparaison</title><body scroll = no><center><br><br>ce programme affiche le plus grand, et le plus petit nombre de la liste ci-dessous :<br><br>[654|465|7|953|564|566|804|3298|1]<br><br>')
document.write("le plus petit nombre de la série est : "+compare("min",new Array(654,465,7,953,564,566,804,3298,1))+"<br>")
document.write("le plus grand nombre de la série est : "+compare("max",new Array(654,465,7,953,564,566,804,3298,1)))
document.write('</center></body></html>')
</script>
Description :
avec cette fonction, je pourrais valider mes formulaires via XMLHttpRequest.
il faut juste rajouter un escape() devant chaque extraction ( corrigé d'ici demain )
Array.prototype.inArray = function (v)
{
var j;
for (j=0;j<this.length;j++)
{
if (this[j]===v)
{
return true;
}
}
return false;
};
function getInfo(nomChampInactif,direction)
{
var tabinactif=nomChampInactif.split("|");//separateur utilisé pour separer les champs inutilisés
var leform=document.forms["ff"];//nom du formulaire
var lesdata="?";
var curelem;
for(i=0;i<leform.elements.length;i++)
{
curelem=leform.elements[i];
if(!tabinactif.inArray(curelem.name))
{
switch(leform.elements[i].type)
{
case 'checkbox' :
if(leform.elements[i].checked==true)
lesdata+=leform.elements[i].name+"="+leform.elements[i].value+"&";
break;
case 'radio' :
if(leform.elements[i].checked==true)
lesdata+=leform.elements[i].name+"="+leform.elements[i].value+"&";
break;
case 'text' :
lesdata+=curelem.name+"="+curelem.value+"&";
break;
case 'select-one' :
lesdata+=curelem.name+"="+curelem.value+"&";
break;//le reste est a ajouter
default :
//
break;
}
}
}
return lesdata.substring(0,lesdata.length-1);//retrait du '&'
}
un exemple :
( mapage.html )
<html>
<head>
<script language="javascript">
Array.prototype.inArray = function (v)
{
var j;
for (j=0;j<this.length;j++)
{
if (this[j]===v)
{
return true;
}
}
return false;
};
function getInfo(nomChampInactif,direction)
{
var tabinactif=nomChampInactif.split("|");//separateur utilisé pour separer les champs inutilisés
var leform=document.forms["ff"];//nom du formulaire
var lesdata="?";
var curelem;
for(i=0;i<leform.elements.length;i++)
{
curelem=leform.elements[i];
if(!tabinactif.inArray(curelem.name))
{
switch(leform.elements[i].type)
{
case 'checkbox' :
if(leform.elements[i].checked==true)
lesdata+=leform.elements[i].name+"="+leform.elements[i].value+"&";
break;
case 'radio' :
if(leform.elements[i].checked==true)
lesdata+=leform.elements[i].name+"="+leform.elements[i].value+"&";
break;
case 'text' :
lesdata+=curelem.name+"="+curelem.value+"&";
break;
case 'select-one' :
lesdata+=curelem.name+"="+curelem.value+"&";
break;//le reste est a ajouter
default :
//
break;
}
}
}
return lesdata.substring(0,lesdata.length-1);//retrait du '&'
}
</script>
</head>
<body>
<form name="ff">
<br /><br /><br />
<input type="text" name="ch1" value="valeurch1">
<br />
<select name="ch2">
<option value="valeur1ch2">valeur1ch2</option>
<option value="valeur2ch2">valeur2ch2</option>
<option value="valeur3ch2">valeur3ch2</option>
</select>
<br />
<input type="checkbox" name="ch3" value="ck1valeur">
<input type="checkbox" name="ch5" value="ck2valeur"> <br />
<input type="radio" name="ch4" value="valeurCh4-1"><input type="radio" name="ch4" value="valeurCh4-2">
</form>
<button type="button" onclick="alert(getInfo(''));">TesT</button>
</body>
</html>
__________________________
la FAQ javascript :
http://www.forum.moteurprog.com/?url=FAQ.php&langage=Javascript
mon site préféré sur le DHTML
http://www.dhteumeuleu.com/
pour ouvrir une popup, pas besoin de creer sa fonction :():
__________________________
la FAQ javascript :
http://www.forum.moteurprog.com/?url=FAQ.php&langage=Javascript
mon site préféré sur le DHTML
http://www.dhteumeuleu.com/
Description : Cette petite fonction permet de rechercher un élément dans une chaîne de caractères, et de le remplacer par un autre. Elle admet 4 arguments, dans l'ordre : la chaîne à parcourir, l'élément à rechercher, l'élément de remplacement (qui peut être le même), et enfin la valeur 0 ou 1 (0 pour retourner la chaîne modifiée, et 1 pour retourner le nombre d'occurences de l'élément recherché).
<script>
function strReplace(text,str,repl,val) {
if(text!="" && str!="" && (val=="0" || val=="1")) {
var lgt1=text.length
var lgt2=str.length
var str1=text
var replaced=""
var occur=0
if(lgt1>=lgt2) {
for(i=0;i<=lgt1;i++) {
var str2=str1.substring(i,i+lgt2)
if(str2==str) {
replaced+=""+repl+""
i+=lgt2-1
++ occur
}
else {
replaced+=""+str2.substring(0,1)+""
}
}
}
else {
replaced=str1
}
if(val==0) {
return replaced.substring(0,replaced.length)
}
if(val==1) {
return occur
}
}
else {
alert("erreur de paramètres dans l\'appel de la fonction strReplace.")
return ""
}
}
</script>
exemple :
<script>
function strReplace(text,str,repl,val) {
if(text!="" && str!="" && (val=="0" || val=="1")) {
var lgt1=text.length
var lgt2=str.length
var str1=text
var replaced=""
var occur=0
if(lgt1>=lgt2) {
for(i=0;i<=lgt1;i++) {
var str2=str1.substring(i,i+lgt2)
if(str2==str) {
replaced+=""+repl+""
i+=lgt2-1
++ occur
}
else {
replaced+=""+str2.substring(0,1)+""
}
}
}
else {
replaced=str1
}
if(val==0) {
return replaced.substring(0,replaced.length)
}
if(val==1) {
return occur
}
}
else {
alert("erreur de paramètres dans l\'appel de la fonction strReplace.")
return ""
}
}
var txt="MoteurProg | Portail dédié à la programmation et l\'informatique Des miliers de sites de programmation, de tutoriaux, de forum, d\'articles, de débat pour C / C++, visual basic, assembleur, php, html, java, Delphi, asp, ..."
document.write("recherche de la lettre \"a\" dans le texte suivant :<br><br><i>"+txt+"</i><br><br>")
document.write(strReplace(txt,"a","<b><u>a</u></b>",1))
document.write(" occurences trouvées.<br><br><i>")
document.write(strReplace(txt,"a","<b><u>a</u></b>",0))
document.write("</i>")
</script>
Auteur: killerdedieu
Domaine: Msn
Fonction: Permet d'ajouter un contact msn via une page web. Et possibiliter d'ouvrir une fênêtre de discution après l'avoir ajouté.
<OBJECT height='1' id='MsgrObj' width='1'></OBJECT>
<script>
function msn(email,pseudo)
{
try{MsgrObj.classid="clsid:B69003B3-C55E-4B48-836C-BC5946FC3B28";}
catch(e){if(!(e.number && 2148139390) == 2148139390)return;}
if(MsgrObj.MyStatus == 1)
{
alert("Connecter-vous pour ajouter un contact");
return;
}
try{var contact = MsgrObj.GetContact(email,"");}
catch(e)
{
if((e.number && 2164261642) == 2164261642)
{
if(confirm("Ajouter "+pseudo+" sur msn?")==true)MsgrObj.AddContact(0,email);
}
}
if(confirm("Envoyer un message live à "+pseudo+" ?")==true)MsgrObj.InstantMessage(email);
}
</script>
<html>
<body>
<a href='javascript:msn("email@hotmail.com","pseudo");'>Ajouter ce contact.</a>
</html>
</body>