2009-04-03 10 views
1

Ich habe eine Situation, wo ich mehrere Listbox-Steuerelemente auf der gleichen asp.net-Seite haben. Sie sind derzeit autosized, um zu verhindern, dass Daten abgeschnitten werden. Allerdings möchte ich in der Lage sein, die Breite der größten Listbox zu bestimmen und dann die Größe der anderen Listboxen zu ändern.Größe der automatischen Steuerung erhalten?

Die Frage ist ... Wie kann ich auf die Größe der Listboxen zugreifen? Oder kann ich?

Antwort

1

Ja, Sie können ...

//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

zu viel Kommentar Verwendung -> // Die maximale Breite Get \ n var maxW = Math.max (Breiten); – cjk

+0

Ich weiß, aber ich möchte alle Javascript-Neulinge verstehen. –

+0

Sollte sagen, dies ist JavaScript, so clientseitig ausführen,/nicht/auf dem Server. – Richard

-1

für die besten Ergebnisse, ziehen Sie einen JavaScript-Framework, mit Jquery:

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

Eine einfache Aufgabe sollte keine große Bibliothek erfordern. –

Verwandte Themen