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.

Reply via email to