Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Javascript > setting style of dynamic options

Reply
Thread Tools

setting style of dynamic options

 
 
netclectic@hotmail.com
Guest
Posts: n/a
 
      11-12-2004
I'm dynamically adding options to a select list in javascript and i
need to be able to set the height of the option, but setting
style.height has not effect, I also tried style.pixelHeight but no
joy.

i'm doing something like this (:

var selectControl = document.getElementById('MySelect');
var el = document.createElement('option');
el.value = "some value";
el.style.height = "500";
selectControl.appendChild(el);


any ideas?
 
Reply With Quote
 
 
 
 
Mick White
Guest
Posts: n/a
 
      11-12-2004
http://www.velocityreviews.com/forums/(E-Mail Removed) wrote:
> I'm dynamically adding options to a select list in javascript and i
> need to be able to set the height of the option, but setting
> style.height has not effect, I also tried style.pixelHeight but no
> joy.
>
> i'm doing something like this (:
>
> var selectControl = document.getElementById('MySelect');
> var el = document.createElement('option');
> el.value = "some value";
> el.style.height = "500";
> selectControl.appendChild(el);
>
>
> any ideas?


500 what? Pixels?
And why no "el.text"?
Mick
 
Reply With Quote
 
 
 
 
RobB
Guest
Posts: n/a
 
      11-12-2004
(E-Mail Removed) wrote in message news:<(E-Mail Removed). com>...
> I'm dynamically adding options to a select list in javascript and i
> need to be able to set the height of the option, but setting
> style.height has not effect, I also tried style.pixelHeight but no
> joy.
>
> i'm doing something like this (:
>
> var selectControl = document.getElementById('MySelect');
> var el = document.createElement('option');
> el.value = "some value";
> el.style.height = "500";
> selectControl.appendChild(el);
>
>
> any ideas?


el.style.height = "500px"; //tall option!
 
Reply With Quote
 
RobG
Guest
Posts: n/a
 
      11-14-2004
(E-Mail Removed) wrote:
> I'm dynamically adding options to a select list in javascript and i
> need to be able to set the height of the option, but setting
> style.height has not effect, I also tried style.pixelHeight but no
> joy.
>
> i'm doing something like this (:
>
> var selectControl = document.getElementById('MySelect');
> var el = document.createElement('option');
> el.value = "some value";
> el.style.height = "500";
> selectControl.appendChild(el);
>
>
> any ideas?


You control the style of an option from the select element it's nested
inside. If you are trying to control the size of the option font, use
a style on the select:

<form...>
<select style="font-size: 12pt;">
<option ...>...</option>
...

Naturally you can also use a CSS class rather than an in-line style.

If you are trying to control the height of the box that the options are
displayed inside, use the "size" attribute of the select element:

<form...>
<select style="font-size: 12pt;" size="4">
<option ...>...</option>
...

"size" refers to the number of options displayed, so you may not want
to use 500.

More information can be found here:

<URL: http://www.w3.org/TR/html4/interact/forms.html#h-17.6>

Cheers, Rob.
 
Reply With Quote
 
RobB
Guest
Posts: n/a
 
      11-15-2004
RobG <(E-Mail Removed)> wrote in message news:<PNRld.673$(E-Mail Removed)>...
> (E-Mail Removed) wrote:
> > I'm dynamically adding options to a select list in javascript and i
> > need to be able to set the height of the option, but setting
> > style.height has not effect, I also tried style.pixelHeight but no
> > joy.
> >
> > i'm doing something like this (:
> >
> > var selectControl = document.getElementById('MySelect');
> > var el = document.createElement('option');
> > el.value = "some value";
> > el.style.height = "500";
> > selectControl.appendChild(el);
> >
> >
> > any ideas?

>
> You control the style of an option from the select element it's nested
> inside. If you are trying to control the size of the option font, use
> a style on the select:
>
> <form...>
> <select style="font-size: 12pt;">
> <option ...>...</option>
> ...
>
> Naturally you can also use a CSS class rather than an in-line style.
>
> If you are trying to control the height of the box that the options are
> displayed inside, use the "size" attribute of the select element:
>
> <form...>
> <select style="font-size: 12pt;" size="4">
> <option ...>...</option>
> ...
>
> "size" refers to the number of options displayed, so you may not want
> to use 500.
>
> More information can be found here:
>
> <URL: http://www.w3.org/TR/html4/interact/forms.html#h-17.6>
>
> Cheers, Rob.


> RobG wrote
> You control the style of an option from the select element it's nested
> inside.


Only in Internet Explorer, where 'windowed' elements (like listboxes)
have limited exposure. More advanced CSS browsers allow styling of
Options like any other element, although some layout aspects,
naturally, pertain to the containing list rather than any specific
option.
 
Reply With Quote
 
RobG
Guest
Posts: n/a
 
      11-15-2004
RobB wrote:
>>RobG wrote
>>You control the style of an option from the select element it's nested
>>inside.

>
>
> Only in Internet Explorer, where 'windowed' elements (like listboxes)
> have limited exposure. More advanced CSS browsers allow styling of
> Options like any other element, although some layout aspects,
> naturally, pertain to the containing list rather than any specific
> option.


Not just Explorer, Safari is the same (but I haven't tested the latest
version). I expect all the Geko-based browsers support styles on
options, perhaps someone can comment on Opera.

Below is some test code, try changing the height of option 11 to 20em -
additional space is added below option 25 - similarly if you make it
500px as the OP attempted.

A bit of testing in Firefox shows that whilst small heights (say
equivalent to 2 to 5 lines) work fine, large heights are not reliable
and results vary if options have different heights specified. Note
also that the option height affects the select height - even though
only 3 rows are supposed to show, the select is greatly expanded - I
guess that the select height is set to size x the largest line height
which can result in an overly extended select.

Given that the OP didn't see any effect of "height" in their browser,
it's likely that s/he isn't using one of the "more advanced CSS
browsers". And given the majority of web surfers use IE, it's best not
to depend on features it doesn't have.

To top it off, the difficulty of controlling the size of the select
element itself if options are given different heights introduces
apparent unreliability in the UI that users may not understand.

But it's an issue worth discussing - thanks for bringing it up.

Rob.

*Play code follows:*

<form action="">
<select name="aSelect"
style="font-size: 10pt; font-family: sans-serif;" size="3">
<option value="opt1">option 1
<option value="opt2">option 2
<option value="opt3">option 3
<option value="opt4">option 4
<option value="opt5">option 5
<option value="opt6">option 6
<option value="opt7">option 7
<option value="opt8"
style="font-family: courier; font-weight: bold;">option 8
<option value="opt9"
style="font-weight: bold; height: 20px;">option 9
<option value="opt10">option 10
<option value="opt11"
style="font-weight: bold; height: 2em;">option 11
<option value="opt12">option 12
<option value="opt13">option 13
<option value="opt14">option 14
<option value="opt15">option 15
<option value="opt16">option 16
<option value="opt17">option 17
<option value="opt18">option 18
<option value="opt19">option 19
<option value="opt20">option 20
<option value="opt21">option 21
<option value="opt22">option 22
<option value="opt23">option 23
<option value="opt24">option 24
<option value="opt25">option 25
</select><br>
<input type="reset"><br><br>
<input type="text" cols="10" name="aNum">
Enter a number from 1 to 25 and that option will be selected<br>
<input type="button" value="click me" onclick="
var x = this.form.aNum.value;
if (x > 0 && x < 26) {
this.form.aSelect.options[x - 1].selected='true'
} else {
alert('From 1 to 25 please, ' + x + ' is out of bounds');
}
">
</form>
 
Reply With Quote
 
netclectic@hotmail.com
Guest
Posts: n/a
 
      11-15-2004
Mick White <(E-Mail Removed)> wrote in message news:<e%5ld.3325$(E-Mail Removed)>...
> (E-Mail Removed) wrote:
> > I'm dynamically adding options to a select list in javascript and i
> > need to be able to set the height of the option, but setting
> > style.height has not effect, I also tried style.pixelHeight but no
> > joy.
> >
> > i'm doing something like this (:
> >
> > var selectControl = document.getElementById('MySelect');
> > var el = document.createElement('option');
> > el.value = "some value";
> > el.style.height = "500";
> > selectControl.appendChild(el);
> >
> >
> > any ideas?

>
> 500 what? Pixels?
> And why no "el.text"?
> Mick


500 anythings, i tried px, pt, % - none of them made any difference.
I was setting el.innerText, missed that out the code snippet. Sorry.
 
Reply With Quote
 
netclectic@hotmail.com
Guest
Posts: n/a
 
      11-15-2004
(E-Mail Removed) (RobB) wrote in message news:<(E-Mail Removed). com>...
> (E-Mail Removed) wrote in message news:<(E-Mail Removed). com>...
> > I'm dynamically adding options to a select list in javascript and i
> > need to be able to set the height of the option, but setting
> > style.height has not effect, I also tried style.pixelHeight but no
> > joy.
> >
> > i'm doing something like this (:
> >
> > var selectControl = document.getElementById('MySelect');
> > var el = document.createElement('option');
> > el.value = "some value";
> > el.style.height = "500";
> > selectControl.appendChild(el);
> >
> >
> > any ideas?

>
> el.style.height = "500px"; //tall option!


tried this, but it doesn't seem to make any difference in IE.
 
Reply With Quote
 
netclectic@hotmail.com
Guest
Posts: n/a
 
      11-15-2004
RobG <(E-Mail Removed)> wrote in message news:<PNRld.673$(E-Mail Removed)>...
> (E-Mail Removed) wrote:
> > I'm dynamically adding options to a select list in javascript and i
> > need to be able to set the height of the option, but setting
> > style.height has not effect, I also tried style.pixelHeight but no
> > joy.
> >
> > i'm doing something like this (:
> >
> > var selectControl = document.getElementById('MySelect');
> > var el = document.createElement('option');
> > el.value = "some value";
> > el.style.height = "500";
> > selectControl.appendChild(el);
> >
> >
> > any ideas?

>
> You control the style of an option from the select element it's nested
> inside. If you are trying to control the size of the option font, use
> a style on the select:
>
> <form...>
> <select style="font-size: 12pt;">
> <option ...>...</option>
> ...
>
> Naturally you can also use a CSS class rather than an in-line style.
>
> If you are trying to control the height of the box that the options are
> displayed inside, use the "size" attribute of the select element:
>
> <form...>
> <select style="font-size: 12pt;" size="4">
> <option ...>...</option>
> ...
>
> "size" refers to the number of options displayed, so you may not want
> to use 500.
>
> More information can be found here:
>
> <URL: http://www.w3.org/TR/html4/interact/forms.html#h-17.6>
>
> Cheers, Rob.


I don't want to set the font size of the select size. I want to set
the height of each option in the select, like line height.
 
Reply With Quote
 
netclectic@hotmail.com
Guest
Posts: n/a
 
      11-15-2004
RobG <(E-Mail Removed)> wrote in message news:<GQXld.697$(E-Mail Removed)>...
> RobB wrote:
> >>RobG wrote
> >>You control the style of an option from the select element it's nested
> >>inside.

> >
> >
> > Only in Internet Explorer, where 'windowed' elements (like listboxes)
> > have limited exposure. More advanced CSS browsers allow styling of
> > Options like any other element, although some layout aspects,
> > naturally, pertain to the containing list rather than any specific
> > option.

>
> Not just Explorer, Safari is the same (but I haven't tested the latest
> version). I expect all the Geko-based browsers support styles on
> options, perhaps someone can comment on Opera.
>
> Below is some test code, try changing the height of option 11 to 20em -
> additional space is added below option 25 - similarly if you make it
> 500px as the OP attempted.
>
> A bit of testing in Firefox shows that whilst small heights (say
> equivalent to 2 to 5 lines) work fine, large heights are not reliable
> and results vary if options have different heights specified. Note
> also that the option height affects the select height - even though
> only 3 rows are supposed to show, the select is greatly expanded - I
> guess that the select height is set to size x the largest line height
> which can result in an overly extended select.
>
> Given that the OP didn't see any effect of "height" in their browser,
> it's likely that s/he isn't using one of the "more advanced CSS
> browsers". And given the majority of web surfers use IE, it's best not
> to depend on features it doesn't have.
>
> To top it off, the difficulty of controlling the size of the select
> element itself if options are given different heights introduces
> apparent unreliability in the UI that users may not understand.
>
> But it's an issue worth discussing - thanks for bringing it up.
>
> Rob.
>
> *Play code follows:*
>
> <form action="">
> <select name="aSelect"
> style="font-size: 10pt; font-family: sans-serif;" size="3">
> <option value="opt1">option 1
> <option value="opt2">option 2
> <option value="opt3">option 3
> <option value="opt4">option 4
> <option value="opt5">option 5
> <option value="opt6">option 6
> <option value="opt7">option 7
> <option value="opt8"
> style="font-family: courier; font-weight: bold;">option 8
> <option value="opt9"
> style="font-weight: bold; height: 20px;">option 9
> <option value="opt10">option 10
> <option value="opt11"
> style="font-weight: bold; height: 2em;">option 11
> <option value="opt12">option 12
> <option value="opt13">option 13
> <option value="opt14">option 14
> <option value="opt15">option 15
> <option value="opt16">option 16
> <option value="opt17">option 17
> <option value="opt18">option 18
> <option value="opt19">option 19
> <option value="opt20">option 20
> <option value="opt21">option 21
> <option value="opt22">option 22
> <option value="opt23">option 23
> <option value="opt24">option 24
> <option value="opt25">option 25
> </select><br>
> <input type="reset"><br><br>
> <input type="text" cols="10" name="aNum">
> Enter a number from 1 to 25 and that option will be selected<br>
> <input type="button" value="click me" onclick="
> var x = this.form.aNum.value;
> if (x > 0 && x < 26) {
> this.form.aSelect.options[x - 1].selected='true'
> } else {
> alert('From 1 to 25 please, ' + x + ' is out of bounds');
> }
> ">
> </form>


Thanks, that makes sense. So setting the height of option isn't
something that can be done in IE. And sure enough, testing my existing
code in Firefox works as expected, sadly it's for an internal web
application where only IE is supported.

Oh well, another feature dropped from the supported list.
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
gcc compiler options for K&R C code Options Utkado C Programming 2 12-18-2008 01:50 PM
Performance issue in multi-level Oracle Object/thin JDBC Options Options jacksu Java 0 10-09-2007 08:21 PM
good compile options for g++ options to enforce good coding Cliff Martin C++ 1 01-31-2007 02:03 AM
Dynamic Select Drop Down, Difficulty Setting Options Adam Javascript 9 08-16-2005 11:03 PM
Need help with Style conversion from Style object to Style key/value collection. Ken Varn ASP .Net Building Controls 0 04-26-2004 07:06 PM



Advertisments