1 / 31

JavaScript Ajax & DOM Manipulation

Matthew Batchelder. JavaScript Ajax & DOM Manipulation. Agenda. JavaScript: What it is and isn't JavaScript: Uses What is the DOM? What is AJAX? jQuery FTW! Manipulating page elements (the DOM) in sweet ways Simplified AJAX Other Coolness Pluggability jQuery in myPlymouth.

astrid
Download Presentation

JavaScript Ajax & DOM Manipulation

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Matthew Batchelder JavaScriptAjax & DOM Manipulation

  2. Agenda • JavaScript: What it is and isn't • JavaScript: Uses • What is the DOM? • What is AJAX? • jQuery FTW! • Manipulating page elements (the DOM) in sweet ways • Simplified AJAX • Other Coolness • Pluggability • jQuery in myPlymouth

  3. Before We Start! • Important tools to have • Use Firefox • Firebug • JS Debugging FTW • Web Developer Toolbar (handy) • A sexy text editor (not notepad)

  4. JS: What it is and isn’t • NOT Java despite its name • ECMAScript • More than form validation • Client-Side Scripting Language • Dynamic • Weakly Typed • Object-Oriented (Prototype-Based) • DOM Event Tool

  5. JavaScript Sandbox • Scripts run in a “sandbox” • Can only perform web-related actions, not File-System actions • Constrained by a “Same Origin Policy”

  6. JS: Usage • Drop this puppy in your page: <html> <head> <title>Example JS Page</title> <script type=“text/javascript”> // javascript code goes here </script> </head> <body> … </body> </html>

  7. JS: Literals • Values (the stuff on the right of the equal sign) are literals. <script type=“text/javascript”> var myNumber = 123; var myString = ‘Bork!’; var myBoolean = true; var myFunction = function(){ return ‘hello’;} var myRegExp = /bork/gi; var myArray = [1, 2, 3]; var myCarObject = { color: ‘red’, tires: 4, windows: 6 } </script>

  8. JS: Objects • Everything in JS is an Object • All literals are object literals. • Those literals can be written: <script type=“text/javascript”> var myNumber = new Number(123); var myString = new String(‘Bork!’); var myBoolean = new Boolean(true); var myFunction = new Function(‘’, “return ‘hello’”);} var myRegExp = new RegExp(‘bork’); var myArray = new Array(); myArray[0] = 1; myArray[1] = 2; myArray[2] = 3; var myCarObject = new Object(); myCarObject.color = ‘red’; myCarObject.tires = 4; myCarObject.windows = 6; </script>

  9. JS: Objects <html> <head> <title>Examples</title> <script type="text/javascript"> var bork = 'Bork!'; var w00t = { hello: 'Greetings', yo: function(){ alert(bork + ' ' + this.hello); } }; var zomg = { nested: { iMeanReallyNested: { seriously: { out: function(){ alert('whee!'); } } } } }; w00t.yo(); zomg.nested.iMeanReallyNested.seriously.out(); </script> </head> <body> ... </body> </html> • Objects values are accessed using dot (“.”) notation: • example

  10. JS: Control Structures if(bork) { //... } else { //... } while(bork) { //... } for(var i = 0; i< 10; i++) { //... } for(var element in array_of_elements) { //... } do { //... } while(bork); switch(bork) { case 1: // if bork == 1... case 'whee': // if bork == 'whee'... case false: // if bork == false... default: // otherwise ... } try { //... } catch(err) { //... }

  11. What is the DOM? • DOM == Document Object Model • The DOM is hierarchical <html> <head> <title>Example JS Page</title> </head> <body> <form id=“some_form”> <input type=“text” name=“bork”/> <input type=“submit” value=“Go”/> </form> </body> </html>

  12. Finding DOM Elements • document.getElementById() • returns a specific element • document.getElementByTag() • returns an array of elements

  13. DOM Element Attributes • nodeName • nodeValue • nodeType • parentNode • childNodes • firstChild • lastChild • previousSibling • nextSibling • attributes • ownerDocument DOM Attributes Node Types • 1 = an HTML element • 2 = an element attribute • 3 = text • 8 = an HTML comment • 9 = a document • 10 = a document type definition Here’s a good article that uses these.

  14. Manipulating the DOM • Dynamically creating and adding elements • document.createElement • appendChild • example

  15. innerHTML • Why go through the trouble of creating Nodes? • More efficient • Easier • example

  16. Events • Click • Dblclick • Mousedown • Mouseup • Mouseover • Mousemove • Mouseout Mouse Frame/Object Form • Load • Unload • Abort • Error • Resize • Scroll • Select • Change • Submit • Reset • Focus • Blur Keyboard • Keypress • Keydown • Keyup

  17. Simple Alert Box <html> <head> <title>Example Message Box Page</title> <script type=“text/javascript”> alert(‘I like butter’); </script> </head> <body> … </body> </html>

  18. Confirm Box Bound to an Event <html> <head> <title>Example Message Box Page</title> <script type="text/javascript"> function doLoad() { document.getElementById('sweet-link').addEventListener(‘click’, confirmClick, false); }//end doLoad function confirmClick() { return confirm(‘Are you sure you wish to go to that link?’); }//end confirmClick window.addEventListener(‘load’, doLoad, false); </script> </head> <body> <a id="sweet-link" href="http://borkweb.com">BorkWeb</a> </body> </html> example

  19. Hiding/Displaying Elements • Element visibility is a nice use of events and DOM manipulation • example

  20. AJAX • AJAX (Asychronous Javascript and XML) • Gives you the ability to load content dynamically! • Loading content on demand • Possible usability Issues • Possible performance problems and benefits • Limitation: No AJAX calls beyond the sandbox. • Note: The way around this is with XSS (Cross Site Scripting)…which can be dangerous if done poorly.

  21. Ajax: XMLHttpRequest • Loading content on demand: <script type="text/javascript"> function ajax(url, vars, callbackFunction){ var request = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("MSXML2.XMLHTTP.3.0"); request.open("GET", url, true); request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); request.onreadystatechange = function(){ if (request.readyState == 4 && request.status == 200){ if (request.responseText){ callbackFunction(request.responseText); } } }; request.send(vars); }//end ajax function out(text){ document.getElementById('content').innerHTML = text; }//end out function ajaxCall(){ ajax('http://borkweb.com/examples/js_workshop/dynamic_content1.html','',out);return false; }//end ajaxCall function doLoad(){ document.getElementById('sweet-link').addEventListener('click', ajaxCall, false); }//doLoad window.addEventListener('load', doLoad, false); </script> • example

  22. Things can actually be a bit easier. How much? Well most of the above. WAIT!!!!!!!!!!!!!

  23. jQuery. That’s what we use on campus. It is awesome. WTF?

  24. What is jQuery? • jQuery is a sweet JavaScript Library • Its Mantra: Find stuff and do stuff with it • Focuses on simplicity • Get it here • Check out the docs

  25. Finding Elements • Say goodbye to document.getElementById() and document.getElementByTag() • Say hello to: $() • Uses CSS Selectors to find elements and returns them as an array of elements.

  26. Finding Elements With $ $(‘a’) $(‘.class’) $(‘#id’) $(‘.content div’) $(‘input[name=bork]’) $(‘input:first’) Here’s an example. Check out the selector syntax for more info.

  27. Lets do some of the stuff we already did… • Adding Text Fields • Toggling Element Visibility • Ajax Content

  28. jQuery Coolness • Browser data • $.browser • Effects • Sliding • Fading • Animating • Chaining • $(‘a’).click(function(){alert(‘hello’); return false;}).css(‘font-weight’,’bold’).fadeOut(‘slow’);

  29. jQuery Plugins • Pluggable! Additional jQuery functionality added by including jQuery plugins.

  30. jQuery in myPlymouth • Go Sidebar • Bookmarks • Tab Stack • Etc… • Check out the source.

  31. Resources: Slide Examples, jQuery, Image Sprites, Mega Man! The End.

More Related