Re: Determining number of visible OPTIONs in a SELECT

"John M. Hann" <[email protected]>
Newsgroups gmane.comp.web.dom.wdf
Message-ID <[email protected]>
Hi Ian,

I assume you are using mySelect.style.height rather than mySelect.size.  Otherwise, this would be a moot discussion.  

IE makes it really hard to work this out because it changes the font size to fit the client height of the select, ignoring any style properties.  I just spent about 10 minutes trying to figure out the algorithm it uses to select a font size, but was unable to see a pattern.  If you do know the pattern (and you don't mind seeing a short blink, you could do this:

var foo = document.getElementById('foo'); // get SELECT element
foo.style.visibility="hidden"; // hide it while we figure this out
foo.style.height="auto"; // ignore style.height
var oldSize=foo.size, oldHeight=foo.style.height; 
foo.size=1; //squish to one row
var height = foo.clientHeight; // get height of one row
foo.size=oldSize; // restore
foo.style.height=oldHeight;
foo.style.visibility="visible";
var optionHeight = IEfontFormula(foo.clientHeight, height);

The IEfontFormula function would determine the height of the row by applying the formula MS uses to select a font size for the OPTIONs.  At this point, you are probably better off using an UL instead of a SELECT:

<style>
#myUL {
  padding: 0px;
  margin: 0px;
  border: 0px;
  height: auto; 
  width: 100%; 
  display: block; 
  list-style: none;
}
#myUL LI {
  text-align: left;
  padding: 0px;
  margin: 0px;
  border: 0px;
  height: 20px;
  width: 100%;
  display: block;
  overflow: hidden;
  text-decoration: none;
}
.oddLi {
  background-color: silver
}
</style>
<DIV style="height: 70px; width: 150px; overflow: auto; border: 1px solid black;">
  <UL id="myUL">
    <LI class="oddLi">Row one</LI>
    <LI>Row two</LI>
    <LI class="oddLi">Row three</LI>
    <LI>Row four</LI>
  </UL>
</DIV>

Regards,

-- John

http://e-numera.com/ 

--- In [email protected], Ian Petersen <ispeters@g...> wrote:
>
> Hello all,
> 
> Does anyone know how to find out how many OPTION nodes are visible in
> a given SELECT in Internet Explorer?
> 
> In Mozilla I can ask the SELECT and one of its OPTIONs for their
> offsetHeights and do some division, but IE always returns zero for the
> OPTION's offsetHeight, so that won't work.
> 
> The reason I'm asking is that I'm trying to "page" through some data,
> and I'd like to show one list-full of list items per page.  I just
> can't figure out how many list items that is in IE.
> 
> Thanks,
> Ian
> 
> --
> Tired of pop-ups, security holes, and spyware?
> Try Firefox: http://www.getfirefox.com
>



[Non-text portions of this message have been removed]



------------------------ Yahoo! Groups Sponsor --------------------~--> 
Get fast access to your favorite Yahoo! Groups. Make Yahoo! your home page
http://us.click.yahoo.com/dpRU5A/wUILAA/yQLSAA/9rHolB/TM
--------------------------------------------------------------------~-> 

Unsubscribe
[email protected]

List info
http://www.quirksmode.org/dom/list.html 
Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/wdf-dom/

<*> To unsubscribe from this group, send an email to:
    [email protected]

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.