Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.javascript > #22785

Re: pass to function

Message-ID <13786118.rByXDuVpAv@PointedEars.de> (permalink)
From Thomas 'PointedEars' Lahn <PointedEars@web.de>
Organization PointedEars Software (PES)
Date 2014-01-25 19:24 +0100
Subject Re: pass to function
Newsgroups comp.lang.javascript
References <lc0ugb$mqb$3@dont-email.me>

Show all headers | View raw


hipa wrote:

> I have a page with a dropdown list with value's from a db. When one item
> is selected a table with invoices changes. I want to do the same if I put
> a value into a text field, but cannot get it to work.

That is not a problem description.  Next time, show what you have tried, say 
what you expected to happen and why, and what happened instead.  And please 
post using your real name.

> Something like:
> <input type="text" onchange="getInvoices();" />. But how can I pass the
> entered value to the getInvoices() function?

  <input type="text" onchange="getInvoices(this)" />
 
> This is the working code:
> 
> <select name="client_id" id="client_id" onchange="getInvoices();">
>   […]
> function getInvoices (elm) {

Given the code above, you are either calling this function the wrong way or 
the function does not make use of the “elm” argument.  Your code is wrong 
either way.

> invoiceArray = eval('(' + response.responseText + ')'); 

You might want to consider a wrapper that prefers 
JSON.parse(response.responseText) before the comparably unsafe eval().

> $('invoiceListings').style.position = "relative"; 
> $('invoiceListings').style.left = "0"; 

  var invoice_listings = $('invoiceListings');
  invoice_listings.style.position = "relative"; 
  invoice_listings.style.left = "0";

Better yet, avoid $('invoiceListings') and associated libraries in favor of 
document.getElementById("invoiceListings") or something like that.

And finally, try replacing all of that with

  invoice_listings.style.display = ""; 

> $('invoiceListings').style.position = "absolute"; 
>                                                         
$('invoiceListings').style.left = "-5000px"; 
>                                                         
$('invoiceListings').style.visibility = "hidden"; 

Try replacing that with

  invoice_listings.style.display = "none"; 

NOTE: Elements where “display: none” are not subject to transition and 
animation effects, while nowaways the “visibility” property can be animated.  
But if you do not use those, using the “display” property is usually better.  

Consider viewports that are wider than 5000px, for example.  In fact, there 
should be no good reason to move the element at all in order to hide it, if 
you position it absolute and set its “visibility” property to “hidden”.

-- 
PointedEars

Twitter: @PointedEars2
Please do not Cc: me. / Bitte keine Kopien per E-Mail.

Back to comp.lang.javascript | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

pass to function hipa <hipa@telenet.be> - 2014-01-25 18:07 +0000
  Re: pass to function Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2014-01-25 19:24 +0100
  Re: pass to function hipa <hipa@telenet.be> - 2014-01-26 15:31 +0000
    Re: pass to function Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2014-01-26 17:58 +0100

csiph-web