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

Simple innerHTML issue

P: n/a
I'm trying to dynamically change the contents of a select box by doing the
following...

function myfunc() {
var obj=document.getElementById("objname"); // name of the select box
var str='';
str+='<option>blah</option>';
obj.innerHTML=str;
alert(obj.innerHTML);
}

For reasons I don't understand, the alert gives me 'blah</option>'. Where is
the leading <option> tag?

--
Christopher Benson-Manica | I *should* know what I'm talking about - if I
ataru(at)cyberspace.org | don't, I need to know. Flames welcome.
Jul 20 '05 #1
Share this Question
Share on Google+
5 Replies


P: n/a
I'm not sure you ammend select objects like this......i.e whether it works
in various browsers.
I'd strip it out and create 'new Option'

Someone else may have a suggestion, but I am not sure this is the right
route for modifying options myself.....I could be wrong.

Stu
"Christopher Benson-Manica" <at***@nospam.cyberspace.org> wrote in message
news:bn**********@chessie.cirr.com...
I'm trying to dynamically change the contents of a select box by doing the
following...

function myfunc() {
var obj=document.getElementById("objname"); // name of the select box
var str='';
str+='<option>blah</option>';
obj.innerHTML=str;
alert(obj.innerHTML);
}

For reasons I don't understand, the alert gives me 'blah</option>'. Where is the leading <option> tag?

--
Christopher Benson-Manica | I *should* know what I'm talking about - if I
ataru(at)cyberspace.org | don't, I need to know. Flames welcome.

Jul 20 '05 #2

P: n/a
This works:

<html>
<head>
<title>Dynamically Add Option to a Select Menu</title>
<script type="text/javascript">
function addOption() {
var oSelect = document.getElementById( 'myselect' )
nextOptIndex = oSelect.length + 1
newOpt = document.createElement( 'OPTION' );
newOpt.text = "New Option #" + nextOptIndex
newOpt.value = nextOptIndex
oSelect.add( newOpt, nextOptIndex )
}
</script>
</head>
<body>
<h1>Dynamically add an option to a select menu</h1>
<select name="myselect" id="myselect">
<option value="default">choose me</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<input type="button" value="add" name="add" onClick="addOption()">
</body>
</html>

"Christopher Benson-Manica" <at***@nospam.cyberspace.org> wrote in message
news:bn**********@chessie.cirr.com...
I'm trying to dynamically change the contents of a select box by doing the
following...

function myfunc() {
var obj=document.getElementById("objname"); // name of the select box
var str='';
str+='<option>blah</option>';
obj.innerHTML=str;
alert(obj.innerHTML);
}

For reasons I don't understand, the alert gives me 'blah</option>'. Where is the leading <option> tag?

--
Christopher Benson-Manica | I *should* know what I'm talking about - if I
ataru(at)cyberspace.org | don't, I need to know. Flames welcome.

Jul 20 '05 #3

P: n/a
DB McGee <no*****@noreply.com> spoke thus:
<title>Dynamically Add Option to a Select Menu</title>
(snipped)


Thanks - I think I'm undestanding why what I had didn't work. The options are
an array and I wasn't treating them like one...

--
Christopher Benson-Manica | I *should* know what I'm talking about - if I
ataru(at)cyberspace.org | don't, I need to know. Flames welcome.
Jul 20 '05 #4

P: n/a
Christopher Benson-Manica <at***@nospam.cyberspace.org> writes:
I'm trying to dynamically change the contents of a select box by doing the
following...


Since you don't say which browser you are using, I'll assume it is
iCab on a Macintosh.

Just kidding, I'll assume it is IE on Windows, since that is what it
usually is when people don't say.

Don't use innerHTML to change the content of a select element in IE.
The content of a select element isn't general HTML, and it won't work
as you expect it to. Using innerHTML adds child nodes to the select
node in the DOM tree, not options to the options collection.

Use
selectRef.add(new Option("text","value"))
instead.

/L
--
Lasse Reichstein Nielsen - lr*@hotpop.com
DHTML Death Colors: <URL:http://www.infimum.dk/HTML/rasterTriangleDOM.html>
'Faith without judgement merely degrades the spirit divine.'
Jul 20 '05 #5

P: n/a
Hi Stuart,

1) document.getElementById is not crossBrowser compatible -- it will
be recognized only by version 5+ browsers.

2) if you want to change a specific option's value/text, the following
is sufficient:
function doit(selObj, ndx)
{
txt = 'a'
selObj.options[ndx].text = txt;
selObj.options[ndx].value = txt;
}

<form name='a'>
<select name="b" onchange="alert(this.options[this.selectedIndex].value)">
<option value='0'>1</option>
<option value='1'>2</option>
<option value='2'>3</option>
</select>
<input type="button" onclick="doit(this.form.b, 2)">
</form>

3) if you want to remove an option, you either set that index to null
selObj.options[0] = null
or set the options.length to some number
selObj.options.length = 0;

4) if you wish to append new options, you need to use the new Option()
constructor. see the selection list script/tutorials at my GrassBlade
Javascript site: http://members.aol.com/grassblad

Vinny

"Christopher Benson-Manica" <at***@nospam.cyberspace.org> wrote in message
news:bn**********@chessie.cirr.com...
I'm trying to dynamically change the contents of a select box by doing the
following...

function myfunc() {
var obj=document.getElementById("objname"); // name of the select box
var str='';
str+='<option>blah</option>';
obj.innerHTML=str;
alert(obj.innerHTML);
}

For reasons I don't understand, the alert gives me 'blah</option>'. Where

is
the leading <option> tag?

--
Christopher Benson-Manica | I *should* know what I'm talking about - if I
ataru(at)cyberspace.org | don't, I need to know. Flames welcome.

Jul 20 '05 #6

This discussion thread is closed

Replies have been disabled for this discussion.