11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

Pour des raisons de mises en pages sur un pdf je dois compléter mes lignes de descriptions par des petits points en sachant que la largeur total imposé est de 210px.
Donc j'ai réussi seulement j'aurai besoin de quelqu'un qui m'aide un peux pour l'optimisé car des fois ça tombe nikel et d'autre fois il me manques quelque points (3 max).
Bon si vous le testé vous verrai que j'affiche la taille de la div et parfois je dépasse les 210px pourtant comme vous pourrez le voir je met bien un : "<Larg"
J'ai égallement géré le retour à ligne enfin bref j'ai besoin que ce soit plus précis si vous avez une idée merci
Voici mon script :

<html>
<head>
<script type="text/javascript">
function carcpix()
{
   divcache=document.getElementById("CACHE");
   divcache.innerHTML=document.getElementById('yvert').value+document.getElementById('descrip').value;
   
var NETSCAPE = (navigator.appName == "Netscape");
var Obj = document.getElementById('CACHE');
if(NETSCAPE)
	{
		Larg= Obj.offsetWidth;
	}
else
	{
		Larg= Obj.scrollWidth;
	}
   
   divtaill=document.getElementById("taillediv");
   divtaill.innerHTML=Larg;
   var descrip = document.getElementById('yvert').value+document.getElementById('descrip').value;
   if(Larg<210)
   	{
		var diff = parseInt(210) - parseInt(Larg);
		var nbTours = parseInt(diff) / parseInt(2);
		var nbTours = Math.round(nbTours,0);
		for(i=0; i<nbTours; i++)
		{
		descrip = descrip+".";
		}
	document.forms.newproduit.descripPDF.value=descrip;
	}
	if(Larg>210)
	{
		var rapport = parseInt(Larg) / parseInt(210);
		var rapportsup = Math.ceil(rapport);
		var maxtotal = parseInt(210) * parseInt(rapportsup);
		var diff = parseInt(maxtotal) - parseInt(Larg);
		var nbTours = parseInt(diff) / parseInt(2);
		var nbTours = Math.round(nbTours,0);
		for(i=0; i<nbTours; i++)
		{
		descrip = descrip+".";
		}
	document.forms.newproduit.descripPDF.value=descrip;
	}
	divcache.innerHTML = descrip;
var NETSCAPE = (navigator.appName == "Netscape");
var Obj = document.getElementById('CACHE');
if(NETSCAPE)
	{
		Larg= Obj.offsetWidth;
	}
else
	{
		Larg= Obj.scrollWidth;
	}
	divtaill.innerHTML=Larg;
}
</script>
</head>
<body>
<form name="newproduit" method="post" enctype="multipart/form-data">
N° Yvert <input maxlength="255" size="3" type="text" name="yvert" id="yvert" onKeyDown="carcpix();" onKeyUp="carcpix();">
<br />
Description
<textarea  name="descrip" id="descrip" cols="70" rows="7" wrap="soft" onKeyDown="carcpix();" onKeyUp="carcpix();" ></textarea>
<br />
<textarea style="visibility:visible;"name="descripPDF" id="descripPDF" wrap="soft"></textarea>
<br />
<input type="button" name="button" value="Envoi">
</form>
<br />
<span id="CACHE" style="width:auto; background-color:#993399; visibility:visible; font:Arial; font-size:8px;"></span>
<br />
<div>La taille de la div est de <span id="taillediv"></span> px</div>
</body>
</html>
 

Si vous vous demandez pourquoi : parseInt(2) c'est parceque c'est la largeur d'un point par rapport au style et à la police de la div

PS : vous pouvez faire un copiez coller du code il marche telquel

A+ Antoine
Salut,

Question bête mais ne serait-il pas possible de le faire avec une image de fond répétée et alignée à droite, sur laquelle viendrait l'intitulé avec un couleur de fond pour cacher les points sous cet intitulé ?
Au lieu d'avoir un script usine à gaz ? Smiley ravi
Re, merci de me répondre,

Pourquoi tu n'aime pas mon script Smiley cligne

Je rigole mais non c'est pas possible je ne sais pas si tu as testé mon code mais en faite faut que je récupere ce qui y'a d'écrit dans le span bon c'est pas un problème mais si y'a une image je ne pourai pas récup de plus affiché des images dans un tableau avec FPDF c'est pas possible à l'heure actuelle car je le répete le but final est l'affichage d'un pdf c'est pourquoi il faudrai un calcul plus précis de mon script de maniere à ce que ça tombe toujours juste et surtout ne pas compter en nombre de caracteres car les largeurs d'un caractere à l'autre son différentes, c'est pour ça que c'est l'usine à gaz Smiley biggol

Si vous voulez vous pouvez voir un pdf ainsi généré ici : http://perso.orange.fr/philatours/pdf4.pdf et vous pouvez voir que les pointillés ne s'arrete pas tous au meme moment je suis des fois à -3 petits points

Voilà
Modifié par Polemoss (22 May 2007 - 16:37)