By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
445,928 Members | 1,810 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 445,928 IT Pros & Developers. It's quick & easy.

setting style of dynamic options

P: n/a
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?
Jul 23 '05 #1
Share this Question
Share on Google+
9 Replies


P: n/a
ne********@hotmail.com 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
Jul 23 '05 #2

P: n/a
ne********@hotmail.com wrote in message news:<5b**************************@posting.google. 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!
Jul 23 '05 #3

P: n/a
ne********@hotmail.com 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.
Jul 23 '05 #4

P: n/a
RobG <rg***@iinet.net.auau> wrote in message news:<PN*****************@news.optus.net.au>...
ne********@hotmail.com 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.
Jul 23 '05 #5

P: n/a
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>
Jul 23 '05 #6

P: n/a
Mick White <mw******@rochester.rr.com> wrote in message news:<e%****************@twister.nyroc.rr.com>...
ne********@hotmail.com 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.
Jul 23 '05 #7

P: n/a
fe******@hotmail.com (RobB) wrote in message news:<ab**************************@posting.google. com>...
ne********@hotmail.com wrote in message news:<5b**************************@posting.google. 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.
Jul 23 '05 #8

P: n/a
RobG <rg***@iinet.net.auau> wrote in message news:<PN*****************@news.optus.net.au>...
ne********@hotmail.com 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.
Jul 23 '05 #9

P: n/a
RobG <rg***@iinet.net.auau> wrote in message news:<GQ*****************@news.optus.net.au>...
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.
Jul 23 '05 #10

This discussion thread is closed

Replies have been disabled for this discussion.