Welcome to WebmasterWorld Guest from 54.224.200.104

Forum Moderators: open

Message Too Old, No Replies

Trouble setting field.options[i].text in netscape 4

Does Nn4 = Js1.0?

     
3:26 pm on Apr 16, 2003 (gmt 0)

Full Member

10+ Year Member

joined:Mar 7, 2003
posts:272
votes: 0


i presume it is.. but was just wondering..

cheers,

nat

3:33 pm on Apr 16, 2003 (gmt 0)

Senior Member

WebmasterWorld Senior Member tedster is a WebmasterWorld Top Contributor of All Time 10+ Year Member

joined:May 26, 2000
posts:37301
votes: 0


Netscape 4 uses Javascript 1.2. Javascript 1.0 was introduced all the way back at Netscape 2.

I put together this handy reference for versions of javascript, jscript and ecmascript [webmasterworld.com] a while back. Hope it helps you.

3:39 pm on Apr 16, 2003 (gmt 0)

Full Member

10+ Year Member

joined:Mar 7, 2003
posts:272
votes: 0


ok , in which case why can i not set the field.options[i].text value of a select in netscrape 4 then :(

from js book


in JS 1.0 text value of option is read only ..
in JS 1.1 and up it is settable.

or mbe im just missing something.. i am pretty knackered..

function clearselect(field){
for (i = field.options.length; i >= 0; i--) {
if(isNN == true){
field.options[i].text = '';
}else{
field.options[i] = null;
}
}
}

as you may have found. doing this .. when i want to refill the field, NN4 gives the depth of the dropdowns no depth..
something that im missing?!

cheers again

9:37 pm on Apr 16, 2003 (gmt 0)

Senior Member

WebmasterWorld Senior Member drdoc is a WebmasterWorld Top Contributor of All Time 10+ Year Member

joined:Mar 15, 2002
posts:6807
votes: 0


The problem (in this case) is the actual value of the variable "field". For NN4 it works best with document.layers... For IE4 it's document.all... For more recent browsers you should use document.getElementById...

Or, whenever possible use the universal this to pass the correct value for each individual browser.

2:51 pm on Apr 17, 2003 (gmt 0)

Senior Member

WebmasterWorld Senior Member 10+ Year Member

joined:Apr 15, 2003
posts:939
votes: 25


I'm obviously coming in late to this discussion, but to my knowledge, NS4 doesn't behave any differently than any other browser when it comes to <form> elements. Are you sure your test that sets the variable "isNN" is detecting only NS4 and not NS v6.x+?

In any case, your sample code looks like it is attempting to modify only the VALUE of a form's <OPTION>. DrDoc is probably on the right path when he suggests you really need to modify the innerHTML/layer contents entirely so not only will the <OPTION> value be updated, the user will see the new value in the OPTIONs list on the page as well. Sadly, in NS4, this can only be done in a absolutely-positioned <DIV>. I use code like this to write HTML:

function writeMe(theWindow,id,theText) {

if (document.getElementById) { // NS6+, IE5.5+
theWindow.document.getElementById(id).innerHTML = theText;
} else if (document.all) { // IE4+
theWindow.document.all[id].innerHTML = theText;
} else if (document.layers) { // NS4 ONLY!
theElement = theWindow.document.layers[id].document;
theElement.open(); // open document
theElement.write(theText); // write to document
theElement.close(); // close document
} // endif browser branches

} // end writeMe

So, you'd be setting theText to something like:

theText = "<option value=\"" + newValue + "\">" +
newOptionLabel + "</option>";

and then call writeMe(); with the appropriate values. Good luck!