... and would like to understand this particular bit of the above code
What does the following bit mean? I've never seen logic like this before.
if (x) x =
Is this a comparison / some kind of logical operator? I'm wondering if it's a way to detect whether x is NULL and so get information from the immediate parent element. Nevertheless, I'd like to understand what it means.
The test is using the principle of "truthy" and "falsy" and will coerce them into true or false
The code you posted may be misleading later since it tests that x is set to something, anything instead of testing that the assignment returned a collection as expected
var x = document.getElementById(this.id + "autocomplete-list"); // returns an DOM node or undefined/null if nothing existsif (x) x = x.getElementsByTagName("div"); // test that the previous returned something and then find the divs inside it
It luckily works, but if we convert it to jQuery for example, we are better off testing the length since $x will be a jQuery object regardless and you will get the error further down
var $x = $("#"+this.id + "autocomplete-list"); // returns an jQuery object regardless of existence of a listif ($x.length >0) $x = $("div",$x); // better test
Ah ha!
So it's really saying;
"if the autocomplete-list currently defined as x exists, x is all the elements with tagname 'div'"
Is that correct?
If it is, you're a star, I've not come across a syntax option like the above before.
Thanks