
On Mar 20, 2005, at 8:24 PM, Dave Cook wrote:
I'd like to set the <option>s in on <select> based on user input from another (using Nevow 0.3). I tried something like
client.set("mySelect", [tags.option[optionText] for optionText in myListOfStrings])
in my handler. This works great for Safari, but Firefox seems to ignore the <option> tags and just inserts text into the DOM at that point. *Should* the above work generally, or was I just lucky with Safari?
Doing things like this is highly dependent on how well a browser lets you arbitrarily swap out dom elements after the page is already rendered. As you observed, this works on Safari but not IE or Firefox. I don't think there is really any technique besides experimentation to determine what does and does not work. .innerHTML is not standard, but it was invented by IE and is very widely supported by all other major browsers now. It works the most reliably of any techniques I have found short of using the actual w3c DOM createElement/appendChild APIs to programatically construct nodes in the client, which would be a real pain in the ass to render. I suggest trying something like this instead to see if browsers can cope with it a little better: tags.span(id="mySelect")[...] client.set("mySelect", tags.select[[tags.option[optionText] for optionText in myListOfStrings]]) dp