Hi, Your code is looking for an element with `name` equal to "ajowner", but the `name` on your radio buttons is "owner", not "ajowner".
Also, note that your HTML is invalid. You have two elements with the `id` (not `name`) "ajowner". `id` values MUST be unique on the page[1] [1] http://www.w3.org/TR/html5/elements.html#the-id-attribute HTH, -- T.J. :-) On Apr 18, 3:43 pm, Phil Petree <phil.pet...@gmail.com> wrote: > TJ You're right... it's showing the element as undefined but I'm not sure > why.. > > HTML: > <label id='labowner' for='ajowner'>owner</label> > <input type='radio' name='owner' id='ajowner' value='true'/> True > <input type='radio' name='owner' id='ajowner' value='false'/> False > RESULTS from your code: > > if(bOwner) > selectThis = {selectID: 'ajowner', selectValue: 'true' }; // this is > what gets set as bOwner is '1' > else > selectThis = {selectID: 'ajowner', selectValue: 'false' }; > var selector = radioTemplate.evaluate(selectThis); > // selectThis = object {selectID="ajowner", selectValue="true"} > > var selector = radioTemplate.evaluate(selectThis); > // "input[type=radio][name=ajowner][value=true]" > > var list = $$(selector); > // list = [] > > var element = list[0]; > // undefined - throws here! > > These work: > $('ajowner').writeAttribute("checked", "checked"); // sets the 'true' > button > $$("input[type=radio][name='owner'][value='false']")[0].writeAttribute("che > cked", > "checked"); // will set either button > > On Mon, Apr 18, 2011 at 3:03 AM, T.J. Crowder <t...@crowdersoftware.com>wrote: > > > > > > > > > Hi, > > > > $$(radioTemplate.evaluate(selectThis))[0].writeAttribute("checked", > > > "checked"); // blows up! > > > The first step is to find out *what part* is blowing up. Break the > > statement up into its component parts: > > > var selector = radioTemplate.evaluate(selectThis); > > var list = $$(selector); > > var element = list[0]; > > element.writeAttribute("checked", "checked"); > > > ...and walk through with a debugger[1] and see what things look like > > at each stage. According to your quoted code, the value of `selector` > > once you've done the `evaluate` _will_ be "input[type=radio] > > [name=owner][value=1]" (see this: [2]). I'm fairly sure templates have > > nothing to do with what's going wrong. (My money is on that selector > > not matching anything, hence indexing into it giving you `undefined`, > > which you're then trying to call a function on. So the question is: > > Why isn't it matching anything.) > > > [1]http://blog.niftysnippets.org/2011/03/no-excuse.html > > [2]http://jsbin.com/owaqa3 > > > FWIW, > > -- > > T.J. Crowder > > Independent Software Engineer > > tj / crowder software / com > > www / crowder software / com > > > On Apr 18, 1:30 am, Phil Petree <phil.pet...@gmail.com> wrote: > > > var bOwner = 1; > > > var radioTemplate = new > > > Template('input[type=radio][name=#{selectID}][value=#{selectValue}]'); > > > $('ajRecord').value = 1; > > > $('ajacct_id').value = 1; > > > $('ajhoa_id').value = 1; > > > selectThis = {selectID: 'owner', selectValue: bOwner }; > > > $$(radioTemplate.evaluate(selectThis))[0].writeAttribute("checked", > > > "checked"); // blows up! > > > > // this works but we prefer to use the template for brevity/bandwidth > > sake > > > if(bOwner > 0 ) > > > { > > > $('ajowner').writeAttribute("checked", "checked");} > > > > else > > > $$("input[type=radio][name='owner'][value='false']")[0].writeAttribute("che > > cked", > > > "checked"); > > > > On Sun, Apr 17, 2011 at 6:45 PM, Walter Lee Davis <wa...@wdstudio.com > > >wrote: > > > > > Sure, this is something I have struggled with as well. The return from > > a > > > > Template.evaluate call is not the generated object, but some other form > > of > > > > return (probably a boolean success or something like that -- not > > exactly > > > > sure). > > > > > If you need to get access to the object immediately after creating it, > > you > > > > may want to use the new Element() syntax instead of Template, because > > this: > > > > > var foo = new Element('div',{id:'bar'}); > > > > > will return a handle to the element, even before you add it to the > > page, > > > > while Template.evaluate may need you to pause a beat before $('bar') > > will > > > > access the element from your page after you've inserted it. > > > > > Walter > > > > > On Apr 17, 2011, at 2:52 PM, Phil Petree wrote: > > > > > Using Prototype version 1.6.1 (I know everyone is up to 1.7 but we > > can't > > > >> upgrade at this time) > > > >> Code looks like this: > > > > >> var selectThis; > > > >> var radioTemplate = new > > > >> Template('input[type=radio][name=#{selectID}][value=#{selectValue}]'); > > > >> var bValue = 1; // this is actually set from the rc of a function and > > is > > > >> absolutely 1 but it shouldn't matter > > > > >> selectThis = {selectID: 'owner', selectValue: bValue }; > > > >> $$(radioTemplate.evaluate(selectThis))[0].writeAttribute("checked", > > > >> "checked"); > > > >> the last line causes a throw and all processing stops. any ideas? > > > > >> Thanks, > > > > >> Phil > > > > >> -- > > > >> You received this message because you are subscribed to the Google > > Groups > > > >> "Prototype & script.aculo.us" group. > > > >> To post to this group, send email to > > > >> prototype-scriptaculous@googlegroups.com. > > > >> To unsubscribe from this group, send email to > > > >> prototype-scriptaculous+unsubscr...@googlegroups.com. > > > >> For more options, visit this group at > > > >>http://groups.google.com/group/prototype-scriptaculous?hl=en. > > > > > -- > > > > You received this message because you are subscribed to the Google > > Groups > > > > "Prototype & script.aculo.us" group. > > > > To post to this group, send email to > > > > prototype-scriptaculous@googlegroups.com. > > > > To unsubscribe from this group, send email to > > > > prototype-scriptaculous+unsubscr...@googlegroups.com. > > > > For more options, visit this group at > > > >http://groups.google.com/group/prototype-scriptaculous?hl=en. > > > -- > > You received this message because you are subscribed to the Google Groups > > "Prototype & script.aculo.us" group. > > To post to this group, send email to > > prototype-scriptaculous@googlegroups.com. > > To unsubscribe from this group, send email to > > prototype-scriptaculous+unsubscr...@googlegroups.com. > > For more options, visit this group at > >http://groups.google.com/group/prototype-scriptaculous?hl=en. -- You received this message because you are subscribed to the Google Groups "Prototype & script.aculo.us" group. To post to this group, send email to prototype-scriptaculous@googlegroups.com. To unsubscribe from this group, send email to prototype-scriptaculous+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/prototype-scriptaculous?hl=en.