Afficher la largeur d'un texte bien précis (en pixels) -> ?
Bonjour,
Voilà ce qui m'arrive :
J'ai le programme ci-dessous qui me permet d'afficher la largeur (en pixels) du texte contenu dans le 1er div rencontré... Bon, jusque là, tout va bien !
Après, comment puis-je faire, SVP, pour afficher, par exemple, la largeur du 3ème Div rencontré ?
En vous remerciant par avance ! :)
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
| <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Essai</title>
<style type="text/css">
#container {
position:absolute;
left:100px;
top:70px;
width:400px;
height:280px;
border:1px solid #EFBA3F;
}
#texte {
height:45px;
border-top : #ff7837 1px solid;
border-right : #AA5515 1px solid;
border-bottom : #AA5515 1px solid;
padding-right : 4px;
padding-left : 5px;
background-color: #FFD9B3;
}
</style>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.4.2.min.js"></script>
<script type="text/javascript">
$(function() {
largeur_texte=document.getElementById('texte').offsetWidth;
$("#largeur").text('Largeur : ' + largeur_texte + 'px');
});
</script>
</head>
<body bgcolor="#FFFFFF">
<div id="container">
<div>
<span id="texte">Premier texte</span>
</div>
<div>
<span id="texte">Texte un peu plus long</span>
</div>
<div>
<span id="texte">Texte encore un peu plus long</span>
</div>
<div>
<span id="texte">Texte plus court</span>
</div>
<div id="largeur"></div>
</div>
</body>
</html> |
Comparaison des temps d'exécution
J'ai fait un test pour voir les différences de performance.
En executant 10,000 fois l'opération d'affectation de la largeur en question:
sur chrome:
avec jquery 1.4 : 834ms ; 1.3 : 782ms
sans jquery : 5ms
sur IE8
avec jquery 1.4 : 4100ms
sans jquery : 624ms
donc tu as raison, le carburant coute quand même cher...
le code du test, tiré de la discussion sur les bonnes pratiques
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script src="http://www.google.com/jsapi" type="text/javascript"></script>
<script type="text/javascript" charset="utf-8">
google.load("jquery", "1.4");
</script>
</head>
<body>
<span id="texte">Premier texte</span>
<input type="button" onclick="testJquery()" value="testJquery" />
<input type="button" onclick="test()" value="test" />
<script type="text/javascript">
function test(){
var Debut = new Date();
len = 10000;
for(var i=0; i<len ; i++){
largeur_texte=document.getElementById('texte').offsetWidth;
}
var Fin = new Date();
alert((Fin-Debut)+ " ms");
}
function testJquery(){
var Debut = new Date();
len = 10000;
for(var i=0 ; i< len ; i++){
largeur_texte= $('#texte').width();
}
var Fin = new Date();
alert((Fin-Debut)+ " ms");
}
</script>
</body>
</html> |