Category Archives: JavaScript

What’s an Object in JavaScript?

Almost everything is an object.

  • Primitives: numbers, booleans, strings, null, undefined
  • Objects: Math, Date, JSON, window, document, objects you create, array, function, numbers, booleans, strings

Functions are “first class” values.

  • Assign a function to a variable.
  • Store a function as a value in an array or object.
  • Pass a function to a function.
  • Return a function from a function.

Primitives don’t look like objects.


var phoneNumber = "555-1212";	//phoneNumber is a primitive.
console.log(phoneNumber.length);//Now we need phoneNumber to be an object.
/*********************
*	BEHIND THE SCENES
*
*	phoneNumber is converted to a string object.
*	.length property is then accessed
*	
**********************/	
console.log(phoneNumber);		//phoneNumber is a primitive again.

Dos and Don’ts in JavaScript

Best Practices:

  • Choose short but readable variable names.
  • Avoid global variables.
  • Use only one global object to encapsulate any global variables you really need.
  • Always use var to declare your variables.
  • Indent your code so it’s readable.
  • Use curly braces to define blocks of code.
  • Comment your code.
  • Always use semi-colons.
  • Be aware of where automatic semi-colon insertion happens.
  • Declare variables outside loops.
  • Reduce DOM operations.

JavaScript Window Location Options

/******************************************************************* 
* JavaScript Window Location Options
* URL: http://www.sample.com/sample.htm?query=accreditation
*******************************************************************/
window.location.search.substr(7); //'accreditation'
window.location.href.slice(window.location.href.indexOf('?') + 7).split('&'); //'accreditation'
(window.location.href.indexOf('query=') > -1); //true
(window.location.href.indexOf('jumpTo=') > -1); //false

Crawl Metatags with Nutch 1.7

In regards to the Stackoverflow recommendation on enabling the metatag plugin, I came across a roadblock when I had to merge this solution to my integration of AJAX Solr. Unfortunately, taking the recommendation at face value caused a JavaScript error of undefined when accessing the the meta tag key/value pair from the JSON object. Granted the recommendation chained metatag.description together, it interpreted metatag to be an object that did not exist.

Reviewing the key/value structure of JSON, I came across this discussion on Parsing JSON with hyphenated key names, I thought the same would hold true for mine. That said, I’ve augmented the Stackoverflow suggestion slightly to leverage underscores versus dot syntax and came up with the following:


/* For schema.xml on Nutch and Solr */
<field name="metatag_description" type="text_general" stored="true" indexed="true"/>
<field name="metatag_keywords" type="text_general" stored="true" indexed="true"/>

/* For solrindex-mapping.xml on Nutch */
<field dest="metatag_description" source="metatag.serptitle"/>
<field dest="metatag_keywords" source="metatag.serpdescription"/>

This was implemented on Nutch 1.7 on a Solr 4.5.0 instance.

Please refer to the following for context:

  1. Extracting HTML meta tags in Nutch 2.x and having Solr 4 index it
  2. Parsing JSON with hyphenated key names
  3. Nutch – Parse Metatags

Dynamically wrap specific HTML elements with jQuery

Constructs of my HTML and selectors are pertinent to my project only. HTML is assumed to have an initial div block with an unordered list as its child written natively to the index file.


//Published unordered list
var pubList = $('div.entrysingle.hidden ul');

//Check if unordered list is visible
if (pubList.length > 0) {

    var boxItOptHdrs = $('div.entrysingle.hidden ul .selectboxit-optgroup-header');
    var split_at = boxItOptHdrs;
    
    $(split_at).each(function() {
      $(this).add($(this).nextUntil(split_at)).wrapAll('
'); }); }

Check html element for inline CSS


/**
 *	Check all div elements for inline CSS display block.
 *	Should output 'Do stuff.' if display block is true.
 *	Requires jQuery to leverage: $ alias and .css() method
 */
if (($('div').css('display') == 'block')) {
	console.log('Do stuff.');
}

/**
 *	Select div element(s) with inline CSS display block.
 *	Should return div element(s) if executed in dev console.
 *	Requires jQuery to leverage: $ alias
 */
$('div[style="display: block;"]'); 

Thanks to: Stackoverflow and jsfiddle