2009-04-03 7 views
1

J'ai une situation où j'ai plusieurs contrôles listbox sur la même page asp.net. Ils sont actuellement numérisés pour empêcher les données de se tronquer. Cependant, j'aimerais pouvoir déterminer la largeur de la plus grande liste et ensuite modifier la taille des autres listboxes pour qu'elles soient identiques.Obtenir la taille du contrôle automatique?

La question est ... Comment puis-je accéder à la taille des listes? Ou puis-je?

Répondre

1

Oui, vous pouvez ...

//This is a <div> that wraps around your listboxes 
var wrapperDiv = document.getElementById('listboxWrapper'); 

//Get all <select> elements within the <div> 
var sels = wrapperDiv.getElementsByTagName('SELECT'); 

//An array to store the width values 
var widths = new Array(); 

//Load the array 
for(var i = 0, l = sels.length; i < l; i++) 
    widths[i] = sels[i].offsetWidth; 

//Get the max width 
var maxW = Math.max(widths); 

//Set the max width to all the list boxes 
for(var sel in sels) 
    sels[sel].style.width = maxW; 
+0

trop grand usage de commentaire -> // Récupère la largeur max \ n var maxW = Math.max (largeurs); – cjk

+0

Je sais, mais je veux que tous les débutants Javascript comprennent. –

+0

Doit dire que c'est JavaScript, alors lancez le côté client,/pas/sur le serveur. – Richard

-1

pour les meilleurs résultats, envisager d'utiliser un framework javascript, jquery en utilisant:

var width = 0; 
//get the largest width 
$("select").each(function() { 
    if ($(this).width() > width) { 
     width = $(this).width(); 
    } 
}); 
//make them all the same width 
$("select").css("width", width); 
+0

Une tâche simple ne devrait pas nécessiter une grande bibliothèque. –

Questions connexes