SlideShare a Scribd company logo
JavaScript: Why Should I Care?
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Why should I care?
Dan McGhan
Developer Advocate @Oracle
May 9, 2019
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
You are some of
the most valuable people
in your company!
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
https://apex.oracle.com/quotes
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
“The speed and concurrency offered by
APEX have been exceptionally valuable.”
Eric Brandenburg
“Almost all of the front-‐end applications of our core
insurance system are now based on Oracle APEX, which
has enabled us to not only replace legacy systems but also
significantly enhance required business functionality.”
Filip Ujević
“One application in particular, our Actionable
Intelligence faculty portal, has been critical to
the University’s award-winning success in
improving our student retention and success
rates, but that’s not all we’ve done with APEX.”
Arthur Rinberger
“A database programmer with very limited
exposure to web-based programming languages can
produce significant output as an APEX developer.”
Scott von Kamecke
“Oracle APEX enables us to develop and
deploy secure, responsive web solutions in
a timeframe which would not be possible
with an alternative development tool.”
Gemma Wood
“Oracle Application Express is a quick, powerful, and
mature development tool that allowed us to improve
our productivity level.”
Georges-Martin Caron
“At Essilor, using Oracle Application Express
(APEX), we developed our first mobile
application more quickly and at a lower price
than on one of the smartphones’ own platform.”
Hervé Lasserre
“There is no complex middleware and
infrastructure to deploy, so coupled with the
benefit that APEX is a no- cost feature of the
Oracle Database, APEX helps keep our total cost
of ownership as low as possible.”
Paul Cowley
“Oracle APEX is a key success factor because it
provides an excellent fit to our approach, and in
our opinion there is currently no toolset which
can compete to match our requirements.”
Dirk Böning-Corterier
“We were able to focus on creating new and
modifying existing solutions for our customers
without any concerns of how some third party
components will work within their
environments.”
Enes Hukic
“Not only by being able to use the newest
technology and modern tools, but also going
live in short project timeframes.”
Bektas Pala
“We can in fact shorten the initial project time
by an estimated 2 weeks. As such, the retailer
can reopen the shop earlier and boost revenue.”
Jochen Foss
“Overall, we have saved the company a lot of
time and money by using APEX to cut-through
the normal development lifecycle and to help us
to be compliant with our use of customer data.”
Jagdev Panesar
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
If you're looking for a great APEX
developer, you're really looking for
a full-stack developer.
https://joelkallman.blogspot.com/2017/10/a-great-apex-developer-isa-full-stack.html
“
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Oracle Database
Data Modeling
SQL
PL/SQL
Server-side Client-side
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Oracle Database
Data Modeling
SQL
PL/SQL
Server-side Client-side
HTML
CSS
JavaScript
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 13
2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017
1.6
Incorporating
JavaScript is
documented
2018
A History JavaScript in APEX
2019
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
https://docs.oracle.com/cd/B31034_01/appdev.1016/b14303/build_app.htm
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
https://docs.oracle.com/cd/B31034_01/appdev.1016/b14303/build_app.htm
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
https://docs.oracle.com/cd/B31034_01/appdev.1016/b14303/build_app.htm
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 17
2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017
1.6
Incorporating
JavaScript is
documented
2018
A History JavaScript in APEX
2019
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 18
2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017
1.6
Incorporating
JavaScript is
documented
2.x htmldb_Get
2018
A History JavaScript in APEX
2019
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 19
2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017
1.6
Incorporating
JavaScript is
documented
3.0
2.x htmldb_Get
Interactive Reports (IR)
3.1
2018
A History JavaScript in APEX
2019
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 21
2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017
1.6
Incorporating
JavaScript is
documented
3.0
2.x htmldb_Get
Interactive Reports (IR)
3.1
2018
A History JavaScript in APEX
2019
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 22
2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017
1.6
Incorporating
JavaScript is
documented
3.0
2.x htmldb_Get
Interactive Reports (IR)
apex namespace introduced
JavaScript compressed by default
3.1
2018
A History JavaScript in APEX
2019
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 23
2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017
1.6
Incorporating
JavaScript is
documented
3.0
4.0
Dynamic Actions2.x htmldb_Get
3.2
Interactive Reports (IR)
apex namespace introduced
JavaScript compressed by default
3.1
2018
A History JavaScript in APEX
2019
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 25
2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017
1.6
Incorporating
JavaScript is
documented
3.0
4.0
Dynamic Actions2.x htmldb_Get
3.2
Interactive Reports (IR)
apex namespace introduced
JavaScript compressed by default
3.1
2018
A History JavaScript in APEX
2019
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 26
2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017
1.6
Incorporating
JavaScript is
documented
3.0
4.0
Dynamic Actions
jQuery & other libs included
Page level attributes for JavaScript added
Tree View
Cascading LOVs
Plug-ins
2.x htmldb_Get
3.2
Interactive Reports (IR)
apex namespace introduced
JavaScript compressed by default
3.1
2018
A History JavaScript in APEX
2019
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 27
2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017
1.6
Incorporating
JavaScript is
documented
3.0
4.0
Dynamic Actions
jQuery & other libs included
Page level attributes for JavaScript added
Tree View
Cascading LOVs
Plug-ins
2.x htmldb_Get
4.1
3.2
jQuery Mobile
HTML5 & responsive design
4.2
Interactive Reports (IR)
apex namespace introduced
JavaScript compressed by default
3.1
2018
A History JavaScript in APEX
2019
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 28
2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017
1.6
Incorporating
JavaScript is
documented
3.0
4.0
Dynamic Actions
jQuery & other libs included
Page level attributes for JavaScript added
Tree View
Cascading LOVs
Plug-ins
2.x htmldb_Get
5.0
Page Designer
Modal Dialogs
Theme Roller
FullCalendar
4.1
3.2
jQuery Mobile
HTML5 & responsive design
4.2
Interactive Reports (IR)
apex namespace introduced
JavaScript compressed by default
3.1
2018
A History JavaScript in APEX
2019
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 29
2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017
1.6
Incorporating
JavaScript is
documented
3.0
4.0
Dynamic Actions
jQuery & other libs included
Page level attributes for JavaScript added
Tree View
Cascading LOVs
Plug-ins
2.x htmldb_Get
5.0
Page Designer
Modal Dialogs
Theme Roller
FullCalendar
4.1
3.2
jQuery Mobile
HTML5 & responsive design
4.2
Interactive Reports (IR)
apex namespace introduced
JavaScript compressed by default
3.1
Interactive Grid
JET Charts
5.1
2018
A History JavaScript in APEX
2019
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 30
2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017
1.6
Incorporating
JavaScript is
documented
3.0
4.0
Dynamic Actions
jQuery & other libs included
Page level attributes for JavaScript added
Tree View
Cascading LOVs
Plug-ins
2.x htmldb_Get
5.0
Page Designer
Modal Dialogs
Theme Roller
FullCalendar
4.1
3.2
jQuery Mobile
HTML5 & responsive design
4.2
Interactive Reports (IR)
apex namespace introduced
JavaScript compressed by default
3.1
Interactive Grid
JET Charts
5.1
2018
A History JavaScript in APEX
2019
18.x Additional JET Charts
JET based auto-complete
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 31
2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017
1.6
Incorporating
JavaScript is
documented
3.0
4.0
Dynamic Actions
jQuery & other libs included
Page level attributes for JavaScript added
Tree View
Cascading LOVs
Plug-ins
2.x htmldb_Get
5.0
Page Designer
Modal Dialogs
Theme Roller
FullCalendar
4.1
3.2
jQuery Mobile
HTML5 & responsive design
4.2
Interactive Reports (IR)
apex namespace introduced
JavaScript compressed by default
3.1
Interactive Grid
JET Charts
5.1
2018
A History JavaScript in APEX
2019
18.x Additional JET Charts
JET based auto-complete
19.x
JavaScript API doc overhaul
Simplified modal regions
*New Popup LOV
*Filter Reports
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
It often takes just a few lines of JavaScript
to deliver functionality not available out-of-the-box
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
It often takes just a few lines of JavaScript
to deliver functionality not available out-of-the-box
Your goal is not to be the master…
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
It often takes just a few lines of JavaScript
to deliver functionality not available out-of-the-box
Your goal is not to be the master…
Just know enough to be dangerous!
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
How much do you need to
know to be dangerous?
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Functions
Variables
Conditionals
Loops
JavaScript
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Functions
Variables
Conditionals
Loops
JavaScript
Traversing
Manipulation
Events
Ajax
DOM/jQuery
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Functions
Variables
Conditionals
Loops
JavaScript APEX APIs
apex
apex.item
apex.region
Traversing
Manipulation
Events
Ajax
DOM/jQuery
apex.server
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
1 Dynamic Action
2 lines of JavaScript
Solution:
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
1 Dynamic Action
2 lines of JavaScript
Solution:
($("td[headers='LINK']").length==1)
apex.navigation.redirect($("td[headers='LINK'] a").attr("href"));
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
($("td[headers='LINK']").length==1)
Conditional Expression
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
($("td[headers='LINK']").length==1)
Conditional Expression
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
$("td[headers='LINK']").length==1
Conditional Expression
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
$("td[headers='LINK']").length==1
Conditional Expression
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
$("td[headers='LINK']").length==1
Conditional Expression
$ = jQuery
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
$("td[headers='LINK']").length==1
$ = jQuery
jQuery is a function
Conditional Expression
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
$("td[headers='LINK']").length==1
$ = jQuery
jQuery is a function
functions are invoked with parentheses
Conditional Expression
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
$("td[headers='LINK']").length==1
$ = jQuery
jQuery is a function
functions are invoked with parentheses
a string is passed as a parameter
Conditional Expression
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
<html lang="en">
<head>
<script src="/i/libraries/jquery/3.3.1/jquery-3.3.1.js"></script>
</head>
<body>
<div class="question-wrapper">
<div><h1 id="question">How are you feeling?</h1>
<div>Here are the six basic emotions:</div>
<ul id="emotions-list">
<li class="positive">Happy</li>
<li class="negative">Sad</li>
<li class="negative">Fearful</li>
<li class="negative">Disgusted</li>
<li class="negative">Angry</li>
<li class="neutral">Surprised</li>
</ul>
</div>
<input type="text" name="feeling">
<input type="button" value="Submit">
</div>
</body>
</html>
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
https://en.wikipedia.org/wiki/Paul_Ekman
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
<html lang="en">
<head>
<script src="/i/libraries/jquery/3.3.1/jquery-3.3.1.js"></script>
</head>
<body>
<div class="question-wrapper">
<div><h1 id="question">How are you feeling?</h1>
<div>Here are the six basic emotions:</div>
<ul id="emotions-list">
<li class="positive">Happy</li>
<li class="negative">Sad</li>
<li class="negative">Fearful</li>
<li class="negative">Disgusted</li>
<li class="negative">Angry</li>
<li class="neutral">Surprised</li>
</ul>
</div>
<input type="text" name="feeling">
<input type="button" value="Submit">
</div>
</body>
</html>
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Basic Selectors
ID Class Element
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
$("#question")
Basic Selectors
<div class="question-wrapper">
<div><h1 id="question">How are you feeling?</h1>
<div>Here are the six basic emotions:</div>
<ul id="emotions-list">
<li class="positive">Happy</li>
<li class="negative">Sad</li>
<li class="negative">Fearful</li>
<li class="negative">Disgusted</li>
<li class="negative">Angry</li>
<li class="neutral">Surprised</li>
</ul>
</div>
<input type="text" name="feeling">
<input type="button" value="Submit">
</div>
ID
Class
Element
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
$("#emotions-list")
Basic Selectors
<div class="question-wrapper">
<div><h1 id="question">How are you feeling?</h1>
<div>Here are the six basic emotions:</div>
<ul id="emotions-list">
<li class="positive">Happy</li>
<li class="negative">Sad</li>
<li class="negative">Fearful</li>
<li class="negative">Disgusted</li>
<li class="negative">Angry</li>
<li class="neutral">Surprised</li>
</ul>
</div>
<input type="text" name="feeling">
<input type="button" value="Submit">
</div>
ID
Class
Element
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
$(".positive")
Basic Selectors
<div class="question-wrapper">
<div><h1 id="question">How are you feeling?</h1>
<div>Here are the six basic emotions:</div>
<ul id="emotions-list">
<li class="positive">Happy</li>
<li class="negative">Sad</li>
<li class="negative">Fearful</li>
<li class="negative">Disgusted</li>
<li class="negative">Angry</li>
<li class="neutral">Surprised</li>
</ul>
</div>
<input type="text" name="feeling">
<input type="button" value="Submit">
</div>
ID
Class
Element
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
$(".negative")
Basic Selectors
<div class="question-wrapper">
<div><h1 id="question">How are you feeling?</h1>
<div>Here are the six basic emotions:</div>
<ul id="emotions-list">
<li class="positive">Happy</li>
<li class="negative">Sad</li>
<li class="negative">Fearful</li>
<li class="negative">Disgusted</li>
<li class="negative">Angry</li>
<li class="neutral">Surprised</li>
</ul>
</div>
<input type="text" name="feeling">
<input type="button" value="Submit">
</div>
ID
Class
Element
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
$("div")
Basic Selectors
<div class="question-wrapper">
<div><h1 id="question">How are you feeling?</h1>
<div>Here are the six basic emotions:</div>
<ul id="emotions-list">
<li class="positive">Happy</li>
<li class="negative">Sad</li>
<li class="negative">Fearful</li>
<li class="negative">Disgusted</li>
<li class="negative">Angry</li>
<li class="neutral">Surprised</li>
</ul>
</div>
<input type="text" name="feeling">
<input type="button" value="Submit">
</div>
ID
Class
Element
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
$("input")
Basic Selectors
<div class="question-wrapper">
<div><h1 id="question">How are you feeling?</h1>
<div>Here are the six basic emotions:</div>
<ul id="emotions-list">
<li class="positive">Happy</li>
<li class="negative">Sad</li>
<li class="negative">Fearful</li>
<li class="negative">Disgusted</li>
<li class="negative">Angry</li>
<li class="neutral">Surprised</li>
</ul>
</div>
<input type="text" name="feeling">
<input type="button" value="Submit">
</div>
ID
Class
Element
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Hierarchical Selectors
Child Descendant
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
$(".question-wrapper")
Hierarchical Selectors
<div class="question-wrapper">
<div><h1 id="question">How are you feeling?</h1>
<div>Here are the six basic emotions:</div>
<ul id="emotions-list">
<li class="positive">Happy</li>
<li class="negative">Sad</li>
<li class="negative">Fearful</li>
<li class="negative">Disgusted</li>
<li class="negative">Angry</li>
<li class="neutral">Surprised</li>
</ul>
</div>
<input type="text" name="feeling">
<input type="button" value="Submit">
</div>
Child
Descendant
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
$(".question-wrapper > div")
Hierarchical Selectors
<div class="question-wrapper">
<div><h1 id="question">How are you feeling?</h1>
<div>Here are the six basic emotions:</div>
<ul id="emotions-list">
<li class="positive">Happy</li>
<li class="negative">Sad</li>
<li class="negative">Fearful</li>
<li class="negative">Disgusted</li>
<li class="negative">Angry</li>
<li class="neutral">Surprised</li>
</ul>
</div>
<input type="text" name="feeling">
<input type="button" value="Submit">
</div>
Child
Descendant
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
$(".question-wrapper div")
Hierarchical Selectors
<div class="question-wrapper">
<div><h1 id="question">How are you feeling?</h1>
<div>Here are the six basic emotions:</div>
<ul id="emotions-list">
<li class="positive">Happy</li>
<li class="negative">Sad</li>
<li class="negative">Fearful</li>
<li class="negative">Disgusted</li>
<li class="negative">Angry</li>
<li class="neutral">Surprised</li>
</ul>
</div>
<input type="text" name="feeling">
<input type="button" value="Submit">
</div>
Child
Descendant
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Other Selectors
Form Content Attribute
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
$(":button")
Other Selectors
<div class="question-wrapper">
<div><h1 id="question">How are you feeling?</h1>
<div>Here are the six basic emotions:</div>
<ul id="emotions-list">
<li class="positive">Happy</li>
<li class="negative">Sad</li>
<li class="negative">Fearful</li>
<li class="negative">Disgusted</li>
<li class="negative">Angry</li>
<li class="neutral">Surprised</li>
</ul>
</div>
<input type="text" name="feeling">
<input type="button" value="Submit">
</div>
Form
Content
Attribute
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
$(":contains(are)")
Other Selectors
<div class="question-wrapper">
<div><h1 id="question">How are you feeling?</h1>
<div>Here are the six basic emotions:</div>
<ul id="emotions-list">
<li class="positive">Happy</li>
<li class="negative">Sad</li>
<li class="negative">Fearful</li>
<li class="negative">Disgusted</li>
<li class="negative">Angry</li>
<li class="neutral">Surprised</li>
</ul>
</div>
<input type="text" name="feeling">
<input type="button" value="Submit">
</div>
Form
Content
Attribute
Plus:
• html
• body
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
$("[type]")
Other Selectors
<div class="question-wrapper">
<div><h1 id="question">How are you feeling?</h1>
<div>Here are the six basic emotions:</div>
<ul id="emotions-list">
<li class="positive">Happy</li>
<li class="negative">Sad</li>
<li class="negative">Fearful</li>
<li class="negative">Disgusted</li>
<li class="negative">Angry</li>
<li class="neutral">Surprised</li>
</ul>
</div>
<input type="text" name="feeling">
<input type="button" value="Submit">
</div>
Form
Content
Attribute
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
$("[type='text']")
Other Selectors
<div class="question-wrapper">
<div><h1 id="question">How are you feeling?</h1>
<div>Here are the six basic emotions:</div>
<ul id="emotions-list">
<li class="positive">Happy</li>
<li class="negative">Sad</li>
<li class="negative">Fearful</li>
<li class="negative">Disgusted</li>
<li class="negative">Angry</li>
<li class="neutral">Surprised</li>
</ul>
</div>
<input type="text" name="feeling">
<input type="button" value="Submit">
</div>
Form
Content
Attribute
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
$("input[type='text']")
Other Selectors
<div class="question-wrapper">
<div><h1 id="question">How are you feeling?</h1>
<div>Here are the six basic emotions:</div>
<ul id="emotions-list">
<li class="positive">Happy</li>
<li class="negative">Sad</li>
<li class="negative">Fearful</li>
<li class="negative">Disgusted</li>
<li class="negative">Angry</li>
<li class="neutral">Surprised</li>
</ul>
</div>
<input type="text" name="feeling">
<input type="button" value="Submit">
</div>
Form
Content
Attribute
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
$("td[headers='LINK']").length==1
$ = jQuery
jQuery is a function
functions are invoked with parentheses
a string is passed as a parameter
Conditional Expression
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
But how did they know
to use that selector?
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
$("td[headers='LINK']").length==1
Conditional Expression
the object returned is a wrapper for the selected elements
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
$("td[headers='LINK']").length==1
‘length’ provides a count of the elements
Conditional Expression
the object returned is a wrapper for the selected elements
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
$("td[headers='LINK']").length==1
the condition is checking for a single row
Conditional Expression
‘length’ provides a count of the elements
the object returned is a wrapper for the selected elements
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
1 Dynamic Action
2 lines of JavaScript
Solution:
($("td[headers='LINK']").length==1)
apex.navigation.redirect($("td[headers='LINK'] a").attr("href"));
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
1 Dynamic Action
2 lines of JavaScript
Solution:
($("td[headers='LINK']").length==1)
apex.navigation.redirect($("td[headers='LINK'] a").attr("href"));
😅
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
apex.navigation.redirect($("td[headers='LINK'] a").attr("href"));
Execute JavaScript
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
apex.navigation.redirect($("td[headers='LINK'] a").attr("href"));
Execute JavaScript
apex is a namespace
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
apex.navigation.redirect($("td[headers='LINK'] a").attr("href"));
Execute JavaScript
apex is a namespace
navigation is a namespace
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
apex.navigation.redirect($("td[headers='LINK'] a").attr("href"));
Execute JavaScript
apex is a namespace
navigation is a namespace
redirect is a function, you already know what it does
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
apex.navigation.redirect($("td[headers='LINK'] a").attr("href"));
Execute JavaScript
this is an attribute and hierarchical selector combined
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
apex.navigation.redirect($("td[headers='LINK'] a").attr("href"));
Execute JavaScript
it selects an anchor element within a table data element
this is an attribute and hierarchical selector combined
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
apex.navigation.redirect($("td[headers='LINK'] a").attr("href"));
Execute JavaScript
it selects an anchor element within a table data element
this is an attribute and hierarchical selector combined
attr is a jQuery method
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Basic Methods
Traversal Attribute Manipulation
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Basic Methods
Traversal
Attribute
Manipulation
$("#question")
<div class="question-wrapper">
<div><h1 id="question">How are you feeling?</h1>
<div>Here are the six basic emotions:</div>
<ul id="emotions-list">
<li class="positive">Happy</li>
<li class="negative">Sad</li>
<li class="negative">Fearful</li>
<li class="negative">Disgusted</li>
<li class="negative">Angry</li>
<li class="neutral">Surprised</li>
</ul>
</div>
<input type="text" name="feeling">
<input type="button" value="Submit">
</div>
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Basic Methods
Traversal
Attribute
Manipulation
$("#question").parent()
<div class="question-wrapper">
<div><h1 id="question">How are you feeling?</h1>
<div>Here are the six basic emotions:</div>
<ul id="emotions-list">
<li class="positive">Happy</li>
<li class="negative">Sad</li>
<li class="negative">Fearful</li>
<li class="negative">Disgusted</li>
<li class="negative">Angry</li>
<li class="neutral">Surprised</li>
</ul>
</div>
<input type="text" name="feeling">
<input type="button" value="Submit">
</div>
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Basic Methods
Traversal
Attribute
Manipulation
$("#question").parent().find("li")
<div class="question-wrapper">
<div><h1 id="question">How are you feeling?</h1>
<div>Here are the six basic emotions:</div>
<ul id="emotions-list">
<li class="positive">Happy</li>
<li class="negative">Sad</li>
<li class="negative">Fearful</li>
<li class="negative">Disgusted</li>
<li class="negative">Angry</li>
<li class="neutral">Surprised</li>
</ul>
</div>
<input type="text" name="feeling">
<input type="button" value="Submit">
</div>
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Basic Methods
Traversal
Attribute
Manipulation
$("#question").parent().find("li").eq(2)
<div class="question-wrapper">
<div><h1 id="question">How are you feeling?</h1>
<div>Here are the six basic emotions:</div>
<ul id="emotions-list">
<li class="positive">Happy</li>
<li class="negative">Sad</li>
<li class="negative">Fearful</li>
<li class="negative">Disgusted</li>
<li class="negative">Angry</li>
<li class="neutral">Surprised</li>
</ul>
</div>
<input type="text" name="feeling">
<input type="button" value="Submit">
</div>
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Basic Methods
Traversal
Attribute
Manipulation
$(".neutral")
<div class="question-wrapper">
<div><h1 id="question">How are you feeling?</h1>
<div>Here are the six basic emotions:</div>
<ul id="emotions-list">
<li class="positive">Happy</li>
<li class="negative">Sad</li>
<li class="negative">Fearful</li>
<li class="negative">Disgusted</li>
<li class="negative">Angry</li>
<li class="neutral">Surprised</li>
</ul>
</div>
<input type="text" name="feeling">
<input type="button" value="Submit">
</div>
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Basic Methods
Traversal
Attribute
Manipulation
$(".neutral").addClass("positive")
<div class="question-wrapper">
<div><h1 id="question">How are you feeling?</h1>
<div>Here are the six basic emotions:</div>
<ul id="emotions-list">
<li class="positive">Happy</li>
<li class="negative">Sad</li>
<li class="negative">Fearful</li>
<li class="negative">Disgusted</li>
<li class="negative">Angry</li>
<li class="neutral positive">Surprised</li>
</ul>
</div>
<input type="text" name="feeling">
<input type="button" value="Submit">
</div>
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Basic Methods
Traversal
Attribute
Manipulation
$(".neutral").addClass("positive").removeClass("neutral")
<div class="question-wrapper">
<div><h1 id="question">How are you feeling?</h1>
<div>Here are the six basic emotions:</div>
<ul id="emotions-list">
<li class="positive">Happy</li>
<li class="negative">Sad</li>
<li class="negative">Fearful</li>
<li class="negative">Disgusted</li>
<li class="negative">Angry</li>
<li class="positive">Surprised</li>
</ul>
</div>
<input type="text" name="feeling">
<input type="button" value="Submit">
</div>
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Basic Methods
Traversal
Attribute
Manipulation
$("input[type='text']")
<div class="question-wrapper">
<div><h1 id="question">How are you feeling?</h1>
<div>Here are the six basic emotions:</div>
<ul id="emotions-list">
<li class="positive">Happy</li>
<li class="negative">Sad</li>
<li class="negative">Fearful</li>
<li class="negative">Disgusted</li>
<li class="negative">Angry</li>
<li class="positive">Surprised</li>
</ul>
</div>
<input type="text" name="feeling">
<input type="button" value="Submit">
</div>
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Basic Methods
Traversal
Attribute
Manipulation
$("input[type='text’]").attr("disabled", "disabled")
<div class="question-wrapper">
<div><h1 id="question">How are you feeling?</h1>
<div>Here are the six basic emotions:</div>
<ul id="emotions-list">
<li class="positive">Happy</li>
<li class="negative">Sad</li>
<li class="negative">Fearful</li>
<li class="negative">Disgusted</li>
<li class="negative">Angry</li>
<li class="positive">Surprised</li>
</ul>
</div>
<input type="text" name="feeling"
disabled="disabled">
<input type="button" value="Submit">
</div>
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Basic Methods
Traversal
Attribute
Manipulation
$("#question")
<div class="question-wrapper">
<div><h1 id="question">How are you feeling?</h1>
<div>Here are the six basic emotions:</div>
<ul id="emotions-list">
<li class="positive">Happy</li>
<li class="negative">Sad</li>
<li class="negative">Fearful</li>
<li class="negative">Disgusted</li>
<li class="negative">Angry</li>
<li class="neutral">Surprised</li>
</ul>
</div>
<input type="text" name="feeling">
<input type="button" value="Submit">
</div>
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Basic Methods
Attribute
$("#question").text("How do you feel?")
<div class="question-wrapper">
<div><h1 id="question">How do you feel?</h1>
<div>Here are the six basic emotions:</div>
<ul id="emotions-list">
<li class="positive">Happy</li>
<li class="negative">Sad</li>
<li class="negative">Fearful</li>
<li class="negative">Disgusted</li>
<li class="negative">Angry</li>
<li class="neutral">Surprised</li>
</ul>
</div>
<input type="text" name="feeling">
<input type="button" value="Submit">
</div>
Traversal
Manipulation
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Basic Methods
Traversal
Attribute
Manipulation
$("#emotions-list")
<div class="question-wrapper">
<div><h1 id="question">How are you feeling?</h1>
<div>Here are the six basic emotions:</div>
<ul id="emotions-list">
<li class="positive">Happy</li>
<li class="negative">Sad</li>
<li class="negative">Fearful</li>
<li class="negative">Disgusted</li>
<li class="negative">Angry</li>
<li class="neutral">Surprised</li>
</ul>
</div>
<input type="text" name="feeling">
<input type="button" value="Submit">
</div>
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Basic Methods
Traversal
Attribute
Manipulation
$("#emotions-list").append('<li class="positive">Amusement</li>')
<div class="question-wrapper">
<div><h1 id="question">How are you feeling?</h1>
<div>Here are the six basic emotions:</div>
<ul id="emotions-list">
<li class="positive">Happy</li>
<li class="negative">Sad</li>
<li class="negative">Fearful</li>
<li class="negative">Disgusted</li>
<li class="negative">Angry</li>
<li class="neutral">Surprised</li>
<li class="positive">Amusement</li>
</ul>
</div>
<input type="text" name="feeling">
<input type="button" value="Submit">
</div>
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
apex.navigation.redirect($("td[headers='LINK'] a").attr("href"));
Execute JavaScript
it selects an anchor element within a table data element
this is an attribute and hierarchical selector combined
attr is a jQuery method
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
But how did they know
to use that selector and
target that attribute?
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
But how often are just
a few lines of code
really that useful?
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
https://rimblas.com/blog/2019/02/add-a-reset-button-to-your-interactive-reports/
5 lines of JavaScript code
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
https://explorer.co.uk/calling-plsql-from-javascript/
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
https://explorer.co.uk/calling-plsql-from-javascript/
31 lines of JavaScript code
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
JavaScript is Weird
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
JavaScript is Weird
It was weird from the start…
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Is it accurate?
Is it correct?
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
1 + 2 = ?
In JavaScript…
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
1 + 2 = 3
In JavaScript…
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
1 + 2 = 3
0.1 + 0.2 = ?
In JavaScript…
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
1 + 2 = 3
0.1 + 0.2 = 0.30000000000000004
In JavaScript…
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
1 + 2 = 3
0.1 + 0.2 = 0.30000000000000004
1.1 + 2.2 = ?
In JavaScript…
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
1 + 2 = 3
0.1 + 0.2 = 0.30000000000000004
1.1 + 2.2 = 3.3000000000000003
In JavaScript…
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
1 === 1 // true
Also, in JavaScript…
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
1 === 1 // true
'string' === 'string' // true
Also, in JavaScript…
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
1 === 1 // true
'string' === 'string' // true
[1, 2, 3] === [1, 2, 3] // false
Also, in JavaScript…
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
1 === 1 // true
'string' === 'string' // true
[1, 2, 3] === [1, 2, 3] // false
{name: 'value'} === {name: 'value'} // false
Also, in JavaScript…
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
IIFE
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Immediately Invoked Function Expression
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
IIFE
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
(function() {
var message = 'hello world';
console.log(message);
})();
IIFE
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
(function() {
var message = 'hello world';
console.log(message);
})();
IIFE
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
(function() {
var message = 'hello world';
console.log(message);
}());
IIFE
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
(function() {
var message = 'hello world';
console.log(message);
})();
IIFE
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
To understand the IIFE
one must understand functions
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
create function get_answer
return number
is
l_answer number := 42;
begin
return l_answer;
end;
PL/SQL
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
create function get_answer
return number
is
l_answer number := 42;
begin
return l_answer;
end;
function getAnswer() {
var answer = 42;
return answer;
}
PL/SQL JavaScript
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
create function get_answer
return number
is
l_answer number := 42;
begin
declare
l_other number;
begin
l_other = l_answer * 42;
end;
return l_answer;
end;
function getAnswer() {
var answer = 42;
return answer;
}
PL/SQL JavaScript
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
create function get_answer
return number
is
l_answer number := 42;
begin
declare
l_other number;
begin
l_other = l_answer * 42;
end;
return l_answer;
end;
function getAnswer() {
var answer = 42;
function childFunction() {
var other = answer * 42;
}
return answer;
}
PL/SQL JavaScript
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
<html>
<head>
<title>Simple web page</title>
<script>
(function() {
var message = 'hello world';
console.log(message);
})();
</script>
</head>
<body>
<h1>Hello world!</h1>
</body>
</html>
Webpage
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
<html>
<head>
<title>Simple web page</title>
<script>
var message = 'hello world';
console.log(message);
(function() {
})();
</script>
</head>
<body>
<h1>Hello world!</h1>
</body>
</html>
Webpage
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
<html>
<head>
<title>Simple web page</title>
<script>
var message = 'hello world';
console.log(message);
(function() {
})();
</script>
</head>
<body>
<h1>Hello world!</h1>
</body>
</html>
Webpage
Global
Global
Function
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
<html>
<head>
<title>Simple web page</title>
<script>
function initMyProgram() {
var message = 'hello world';
console.log(message);
}
initMyProgram();
</script>
</head>
<body>
<h1>Hello world!</h1>
</body>
</html>
Webpage
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
<html>
<head>
<title>Simple web page</title>
<script>
function() {
var message = 'hello world';
console.log(message);
}
initMyProgram();
</script>
</head>
<body>
<h1>Hello world!</h1>
</body>
</html>
Webpage
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
<html>
<head>
<title>Simple web page</title>
<script>
function() {
var message = 'hello world';
console.log(message);
}
</script>
</head>
<body>
<h1>Hello world!</h1>
</body>
</html>
Webpage
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
<html>
<head>
<title>Simple web page</title>
<script>
(function() {
var message = 'hello world';
console.log(message);
});
</script>
</head>
<body>
<h1>Hello world!</h1>
</body>
</html>
Webpage
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
<html>
<head>
<title>Simple web page</title>
<script>
(function() {
var message = 'hello world';
console.log(message);
})();
</script>
</head>
<body>
<h1>Hello world!</h1>
</body>
</html>
Webpage
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
So now you know what an IIFE is!
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
So now you know what an IIFE is!
🤯
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
JavaScript has come
a long way since
it’s humble beginnings…
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
2019 Stack Overflow Developer Survey
https://insights.stackoverflow.com/survey/2019#technology
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
RedMonk Q119 Language Rankings
http://sogrady-media.redmonk.com/sogrady/files/2019/03/lang.rank_.119.png
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
So yeah…
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
So yeah…
JavaScript is Weird
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
But JavaScript is also…
Powerful
Flexible
Highly In-demand
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Most importantly, you need
to learn JavaScript to become
a great APEX developer.
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
If you were to give an APEX developer two recommendations
for getting starting with JavaScript, what would they be?
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Peter Raganitsch
Read up on
jQuery
Learn about
APEX JS APIs
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Jorge Rimblas
I would direct
them to my JS/CSS
talk for PL/SQL
developers 😁
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
John Scott
The thing that helped me best
with getting started was a
good Editor Plugin which
helps with Intellisense, Auto-
complete, Formatting, etc...
Also JSFiddle for
quick prototyping,
looking at other
peoples samples, etc
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Christoph Ruepprich
I have had good success with
Pluralsight’s Node.js course
And my favorite JS guru on
YouTube: FunFunFunction
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Adrian Png
Websites - MDN web docs (for reference)
Books - JavaScript: The Definitive Guide (still waiting for the 7th edition)
Other than that... Web
page inspection tools are
great for learning. :-)
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
John Snyders
One thing I would highly
recommend is JavaScript the Good
Parts by Douglas Crockford
Also his web site
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
John Brock “JB”
Choose a sample app topic
that interests you (movie
database, car details, etc),
and try to build that same
sample app in multiple
different
frameworks/toolkits/libraries
as you learn.
Learn "JavaScript" not jQuery
first. Understand what it
means to manipulate the
DOM structure using real
JavaScript before you use a
shortcut like jQuery. It will
serve you better down the
road to know what is going on
behind the scenes.
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
John Brock “JB”
Even at your earliest stages
of writing code, add
comments about what you
are trying to with a section of
code. Ex. what a function is
supposed to do and return.
As you learn more and return
to these samples, you may
want to refactor those areas
with things that you know
more about.
Know your audience. From a
client perspective, what
browsers are you going to
have to support. If there are
any older versions, it will
limit what you can and can't
do with more modern JS
practices. Ex. IE11 doesn't
support arrow functions.
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
John Brock “JB”
Even at your earliest stages
of writing code, add
comments about what you
are trying to with a section of
code. Ex. what a function is
supposed to do and return.
As you learn more and return
to these samples, you may
want to refactor those areas
with things that you know
more about.
Know your audience. From a
client perspective, what
browsers are you going to
have to support. If there are
any older versions, it will
limit what you can and can't
do with more modern JS
practices. Ex. IE11 doesn't
support arrow functions.
I think that's enough. :-)
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Vincent Morneau
So here's my 2 cents
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Vincent Morneau
So here's my 2 cents
Follow web tech leaders
that blog about complicated
stuff, in a simple way.
• David Walsh
• Addy Osmani
• Jake Archibald
• Paul Irish
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Vincent Morneau
So here's my 2 cents
Follow web tech leaders
that blog about complicated
stuff, in a simple way.
• David Walsh
• Addy Osmani
• Jake Archibald
• Paul Irish
Embrace ES6, as it will
inevitably make it to all
browsers. In most cases, it
simplifies the code.
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Vincent Morneau
So here's my 2 cents
Follow web tech leaders
that blog about complicated
stuff, in a simple way.
• David Walsh
• Addy Osmani
• Jake Archibald
• Paul Irish
Embrace ES6, as it will
inevitably make it to all
browsers. In most cases, it
simplifies the code.
READ CODE from
popular Open
Source projects
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Vincent Morneau
So here's my 2 cents
Follow web tech leaders
that blog about complicated
stuff, in a simple way.
• David Walsh
• Addy Osmani
• Jake Archibald
• Paul Irish
Embrace ES6, as it will
inevitably make it to all
browsers. In most cases, it
simplifies the code.
READ CODE from
popular Open
Source projects
FORK repos and
play around
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Vincent Morneau
Final thoughts: there is no escaping JS. As a a large scale app grows, requirements
will grow too and you can't do everything in PL/SQL. Don't be the average dev :)
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
GemmaWood
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Ready to learn more?
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Pluralsight Paths and Courses
• JavaScript Path
– https://www.pluralsight.com/paths/javascript
• Node.js Path
– https://www.pluralsight.com/paths/node-js
• JavaScript Fundamentals for ES6
– https://www.pluralsight.com/courses/javascript-fundamentals-es6
• Rapid ES6 Training
– https://www.pluralsight.com/courses/rapid-es6-training
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Books
• You Don’t Know JS
– https://github.com/getify/You-Dont-Know-JS
• JavaScript: The Definitive Guide
– http://a.co/6cJjHci
• JavaScript the Good Parts
– http://a.co/dx74PuS
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
jQuery
• Online Tutorial: Code Academy
– https://www.codecademy.com/learn/learn-jquery
• Book: A Smarter Way to Learn jQuery
– http://a.co/e9Jzxnx
• API Doc
– http://api.jquery.com/
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
APEX JavaScript APIs
• APEX 19.1
– https://docs.oracle.com/en/database/oracle/application-
express/19.1/aexjs/index.html
• APEX 18.1
– https://docs.oracle.com/database/apex-18.1/AEXJS/index.html
• APEX 5.2
– https://docs.oracle.com/database/apex-5.1/AEAPI/JavaScript-APIs.htm#AEAPI266
• APEX 5.1
– https://docs.oracle.com/database/apex-5.1/AEAPI/JavaScript-APIs.htm#AEAPI266
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Developer Tools & Fiddles
• Chrome Developer Tools
– https://developers.google.com/web/tools/chrome-devtools/
• JSFiddle
– https://jsfiddle.net/
• CodePen
– http://codepen.io/
• JS Bin
– http://jsbin.com
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Editors & plug-ins
• VS Code
– https://code.visualstudio.com/
– https://code.visualstudio.com/docs/nodejs/extensions
• Atom
– https://atom.io/
– https://atom.io/packages
• NetBeans
– https://netbeans.org/
– http://plugins.netbeans.org/
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
YouTube
• Fun Fun Function
– https://www.youtube.com/channel/UCO1cgjhGzsSYb1rsB4bFe4Q
• What the heck is the event loop anyway
– https://www.youtube.com/watch?v=8aGhZQkoFbQ
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Web Leaders on Twitter
• David Walsh
– https://twitter.com/davidwalshblog
• Addy Osmani
– https://twitter.com/addyosmani
• Jake Archibald
– https://twitter.com/jaffathecake
• Paul Irish
– https://twitter.com/paul_irish
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Other
• Free, 134 part course for beginners
– https://www.freecodecamp.org/news/learn-javascript-full-course/
• Weekly newsletter on JavaScript
– https://javascriptweekly.com/
• 30 Seconds of Code
– https://30secondsofcode.org/
• Jorge’s talk on JavaScript and CSS for PL/SQL developers
– http://slides.com/rimblas/javascript-and-css-for-plsql-developers
• Mozilla Developer Network (see “Tutorials” on the left)
– https://developer.mozilla.org/en-US/docs/Web/JavaScript
JavaScript: Why Should I Care?

More Related Content

PDF
JSON and Oracle Database: A Brave New World
PPTX
Intro to GraphQL for Database Developers
PDF
Intro to JavaScript for APEX Developers
PDF
Module 2: Adding JavaScript to APEX Apps
PPTX
Dynamic Actions, the Hard Parts
PDF
Introduction to JavaScript for APEX Developers - Module 2: Adding JavaScript ...
PPTX
Beginner's Guide to APEX
PDF
Module 3: Working with the DOM and jQuery
JSON and Oracle Database: A Brave New World
Intro to GraphQL for Database Developers
Intro to JavaScript for APEX Developers
Module 2: Adding JavaScript to APEX Apps
Dynamic Actions, the Hard Parts
Introduction to JavaScript for APEX Developers - Module 2: Adding JavaScript ...
Beginner's Guide to APEX
Module 3: Working with the DOM and jQuery

What's hot (20)

PDF
Oracle APEX 18.1 New Features
PPTX
Oracle APEX Dynamic Actions
PDF
GraphQL as an alternative approach to REST (as presented at Java2Days/CodeMon...
PDF
NYC School of Data - High School Selection Workshop
PDF
UNYOUG - APEX 19.2 New Features
PDF
Oracle APEX 18.1 New Features
PPTX
AMIS Oracle OpenWorld & CodeOne Review - Pillar 2 - SaaS and Standard Applica...
PDF
APEX Boston Meetup - October 1st, 2019
PDF
Oracle APEX, Oracle Autonomous Database, Always Free Oracle Cloud Services
PPTX
AMIS Oracle OpenWorld & CodeOne Review - Introduction & Overview (5 november ...
PDF
2019 dev-marc sewtz-session-keynote-oracle_apex_19__neue_features_und_roadmap...
PDF
MV2ADB - Move to Oracle Autonomous Database in One-click
PDF
Oracle Application Express 20.2 New Features
PDF
Oracle ADF Architecture TV - Design - Task Flow Communication Pattern
PPTX
AMIS Oracle OpenWorld & CodeOne Review - Pillar 1 - Data (5 november 2018)
PDF
Oracle APEX Social Login
PDF
The 7 Deadly Sins of API Design
PPTX
Oracle APEX Introduction (release 18.1)
PPTX
PPTX
AMIS Oracle OpenWorld & CodeOne Review - Pillar 1 - Cloud Infrastructure (5 n...
Oracle APEX 18.1 New Features
Oracle APEX Dynamic Actions
GraphQL as an alternative approach to REST (as presented at Java2Days/CodeMon...
NYC School of Data - High School Selection Workshop
UNYOUG - APEX 19.2 New Features
Oracle APEX 18.1 New Features
AMIS Oracle OpenWorld & CodeOne Review - Pillar 2 - SaaS and Standard Applica...
APEX Boston Meetup - October 1st, 2019
Oracle APEX, Oracle Autonomous Database, Always Free Oracle Cloud Services
AMIS Oracle OpenWorld & CodeOne Review - Introduction & Overview (5 november ...
2019 dev-marc sewtz-session-keynote-oracle_apex_19__neue_features_und_roadmap...
MV2ADB - Move to Oracle Autonomous Database in One-click
Oracle Application Express 20.2 New Features
Oracle ADF Architecture TV - Design - Task Flow Communication Pattern
AMIS Oracle OpenWorld & CodeOne Review - Pillar 1 - Data (5 november 2018)
Oracle APEX Social Login
The 7 Deadly Sins of API Design
Oracle APEX Introduction (release 18.1)
AMIS Oracle OpenWorld & CodeOne Review - Pillar 1 - Cloud Infrastructure (5 n...
Ad

Similar to JavaScript: Why Should I Care? (20)

PPTX
oracle-apex-forms-modernization-2023.pptx
PDF
Reason To Choose Oracle APEX (Application Express).pdf
PDF
CON6324_EBS_122_Beyond_Online_Patching_OOW2017_PUBLISHED.pdf
PPTX
AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 2: SaaS
PDF
APEX – jak vytvořit jednoduše aplikaci
PDF
Java Frameworks And Components Accelerate Your Web Application Development Mi...
PDF
Oracle9i application server oracle forms services
PDF
Mohamed Taman short C.V version v1.0
PPTX
Oracle forms to oci executive overview for customer
PPTX
Top 10 Front End Development Technologies to Focus in 2018
PDF
Leverage integration cloud_service_for_ebs_
PDF
Javantura v4 - Support SpringBoot application development lifecycle using Ora...
PPTX
Simplify DevOps with Microservices and Mobile Backends.pptx
DOC
Spring Book – Chapter 1 – Introduction
PDF
What Are The Top 5 Progressive Web App Development Frameworks For 2023
PDF
Modern Application Development for the Enterprise
PDF
10 Best Front-end Frameworks for Web Development
PDF
MySQL Connector/J in the Making of Modern Applications
PDF
Apexandfreeadboow19tues 190924225740
PDF
Extending Enterprise Applications to mobile interfaces-Final
oracle-apex-forms-modernization-2023.pptx
Reason To Choose Oracle APEX (Application Express).pdf
CON6324_EBS_122_Beyond_Online_Patching_OOW2017_PUBLISHED.pdf
AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 2: SaaS
APEX – jak vytvořit jednoduše aplikaci
Java Frameworks And Components Accelerate Your Web Application Development Mi...
Oracle9i application server oracle forms services
Mohamed Taman short C.V version v1.0
Oracle forms to oci executive overview for customer
Top 10 Front End Development Technologies to Focus in 2018
Leverage integration cloud_service_for_ebs_
Javantura v4 - Support SpringBoot application development lifecycle using Ora...
Simplify DevOps with Microservices and Mobile Backends.pptx
Spring Book – Chapter 1 – Introduction
What Are The Top 5 Progressive Web App Development Frameworks For 2023
Modern Application Development for the Enterprise
10 Best Front-end Frameworks for Web Development
MySQL Connector/J in the Making of Modern Applications
Apexandfreeadboow19tues 190924225740
Extending Enterprise Applications to mobile interfaces-Final
Ad

Recently uploaded (20)

PPTX
Spectroscopy.pptx food analysis technology
PDF
Video forgery: An extensive analysis of inter-and intra-frame manipulation al...
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PPTX
Group 1 Presentation -Planning and Decision Making .pptx
PDF
Approach and Philosophy of On baking technology
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PPTX
TechTalks-8-2019-Service-Management-ITIL-Refresh-ITIL-4-Framework-Supports-Ou...
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
gpt5_lecture_notes_comprehensive_20250812015547.pdf
PPTX
cloud_computing_Infrastucture_as_cloud_p
PDF
Assigned Numbers - 2025 - Bluetooth® Document
PDF
MIND Revenue Release Quarter 2 2025 Press Release
PPTX
1. Introduction to Computer Programming.pptx
PPTX
Machine Learning_overview_presentation.pptx
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Spectroscopy.pptx food analysis technology
Video forgery: An extensive analysis of inter-and intra-frame manipulation al...
Building Integrated photovoltaic BIPV_UPV.pdf
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
Advanced methodologies resolving dimensionality complications for autism neur...
Group 1 Presentation -Planning and Decision Making .pptx
Approach and Philosophy of On baking technology
Digital-Transformation-Roadmap-for-Companies.pptx
TechTalks-8-2019-Service-Management-ITIL-Refresh-ITIL-4-Framework-Supports-Ou...
Network Security Unit 5.pdf for BCA BBA.
Mobile App Security Testing_ A Comprehensive Guide.pdf
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
gpt5_lecture_notes_comprehensive_20250812015547.pdf
cloud_computing_Infrastucture_as_cloud_p
Assigned Numbers - 2025 - Bluetooth® Document
MIND Revenue Release Quarter 2 2025 Press Release
1. Introduction to Computer Programming.pptx
Machine Learning_overview_presentation.pptx
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Agricultural_Statistics_at_a_Glance_2022_0.pdf

JavaScript: Why Should I Care?

  • 2. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Why should I care? Dan McGhan Developer Advocate @Oracle May 9, 2019
  • 3. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | You are some of the most valuable people in your company!
  • 4. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | https://apex.oracle.com/quotes
  • 5. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
  • 6. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
  • 7. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | “The speed and concurrency offered by APEX have been exceptionally valuable.” Eric Brandenburg “Almost all of the front-‐end applications of our core insurance system are now based on Oracle APEX, which has enabled us to not only replace legacy systems but also significantly enhance required business functionality.” Filip Ujević “One application in particular, our Actionable Intelligence faculty portal, has been critical to the University’s award-winning success in improving our student retention and success rates, but that’s not all we’ve done with APEX.” Arthur Rinberger “A database programmer with very limited exposure to web-based programming languages can produce significant output as an APEX developer.” Scott von Kamecke “Oracle APEX enables us to develop and deploy secure, responsive web solutions in a timeframe which would not be possible with an alternative development tool.” Gemma Wood “Oracle Application Express is a quick, powerful, and mature development tool that allowed us to improve our productivity level.” Georges-Martin Caron “At Essilor, using Oracle Application Express (APEX), we developed our first mobile application more quickly and at a lower price than on one of the smartphones’ own platform.” Hervé Lasserre “There is no complex middleware and infrastructure to deploy, so coupled with the benefit that APEX is a no- cost feature of the Oracle Database, APEX helps keep our total cost of ownership as low as possible.” Paul Cowley “Oracle APEX is a key success factor because it provides an excellent fit to our approach, and in our opinion there is currently no toolset which can compete to match our requirements.” Dirk Böning-Corterier “We were able to focus on creating new and modifying existing solutions for our customers without any concerns of how some third party components will work within their environments.” Enes Hukic “Not only by being able to use the newest technology and modern tools, but also going live in short project timeframes.” Bektas Pala “We can in fact shorten the initial project time by an estimated 2 weeks. As such, the retailer can reopen the shop earlier and boost revenue.” Jochen Foss “Overall, we have saved the company a lot of time and money by using APEX to cut-through the normal development lifecycle and to help us to be compliant with our use of customer data.” Jagdev Panesar
  • 8. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | If you're looking for a great APEX developer, you're really looking for a full-stack developer. https://joelkallman.blogspot.com/2017/10/a-great-apex-developer-isa-full-stack.html “
  • 9. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Oracle Database Data Modeling SQL PL/SQL Server-side Client-side
  • 10. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
  • 11. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
  • 12. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Oracle Database Data Modeling SQL PL/SQL Server-side Client-side HTML CSS JavaScript
  • 13. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 13 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 1.6 Incorporating JavaScript is documented 2018 A History JavaScript in APEX 2019
  • 14. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | https://docs.oracle.com/cd/B31034_01/appdev.1016/b14303/build_app.htm
  • 15. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | https://docs.oracle.com/cd/B31034_01/appdev.1016/b14303/build_app.htm
  • 16. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | https://docs.oracle.com/cd/B31034_01/appdev.1016/b14303/build_app.htm
  • 17. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 17 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 1.6 Incorporating JavaScript is documented 2018 A History JavaScript in APEX 2019
  • 18. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 18 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 1.6 Incorporating JavaScript is documented 2.x htmldb_Get 2018 A History JavaScript in APEX 2019
  • 19. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 19 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 1.6 Incorporating JavaScript is documented 3.0 2.x htmldb_Get Interactive Reports (IR) 3.1 2018 A History JavaScript in APEX 2019
  • 20. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
  • 21. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 21 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 1.6 Incorporating JavaScript is documented 3.0 2.x htmldb_Get Interactive Reports (IR) 3.1 2018 A History JavaScript in APEX 2019
  • 22. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 22 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 1.6 Incorporating JavaScript is documented 3.0 2.x htmldb_Get Interactive Reports (IR) apex namespace introduced JavaScript compressed by default 3.1 2018 A History JavaScript in APEX 2019
  • 23. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 23 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 1.6 Incorporating JavaScript is documented 3.0 4.0 Dynamic Actions2.x htmldb_Get 3.2 Interactive Reports (IR) apex namespace introduced JavaScript compressed by default 3.1 2018 A History JavaScript in APEX 2019
  • 24. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
  • 25. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 25 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 1.6 Incorporating JavaScript is documented 3.0 4.0 Dynamic Actions2.x htmldb_Get 3.2 Interactive Reports (IR) apex namespace introduced JavaScript compressed by default 3.1 2018 A History JavaScript in APEX 2019
  • 26. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 26 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 1.6 Incorporating JavaScript is documented 3.0 4.0 Dynamic Actions jQuery & other libs included Page level attributes for JavaScript added Tree View Cascading LOVs Plug-ins 2.x htmldb_Get 3.2 Interactive Reports (IR) apex namespace introduced JavaScript compressed by default 3.1 2018 A History JavaScript in APEX 2019
  • 27. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 27 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 1.6 Incorporating JavaScript is documented 3.0 4.0 Dynamic Actions jQuery & other libs included Page level attributes for JavaScript added Tree View Cascading LOVs Plug-ins 2.x htmldb_Get 4.1 3.2 jQuery Mobile HTML5 & responsive design 4.2 Interactive Reports (IR) apex namespace introduced JavaScript compressed by default 3.1 2018 A History JavaScript in APEX 2019
  • 28. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 28 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 1.6 Incorporating JavaScript is documented 3.0 4.0 Dynamic Actions jQuery & other libs included Page level attributes for JavaScript added Tree View Cascading LOVs Plug-ins 2.x htmldb_Get 5.0 Page Designer Modal Dialogs Theme Roller FullCalendar 4.1 3.2 jQuery Mobile HTML5 & responsive design 4.2 Interactive Reports (IR) apex namespace introduced JavaScript compressed by default 3.1 2018 A History JavaScript in APEX 2019
  • 29. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 29 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 1.6 Incorporating JavaScript is documented 3.0 4.0 Dynamic Actions jQuery & other libs included Page level attributes for JavaScript added Tree View Cascading LOVs Plug-ins 2.x htmldb_Get 5.0 Page Designer Modal Dialogs Theme Roller FullCalendar 4.1 3.2 jQuery Mobile HTML5 & responsive design 4.2 Interactive Reports (IR) apex namespace introduced JavaScript compressed by default 3.1 Interactive Grid JET Charts 5.1 2018 A History JavaScript in APEX 2019
  • 30. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 30 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 1.6 Incorporating JavaScript is documented 3.0 4.0 Dynamic Actions jQuery & other libs included Page level attributes for JavaScript added Tree View Cascading LOVs Plug-ins 2.x htmldb_Get 5.0 Page Designer Modal Dialogs Theme Roller FullCalendar 4.1 3.2 jQuery Mobile HTML5 & responsive design 4.2 Interactive Reports (IR) apex namespace introduced JavaScript compressed by default 3.1 Interactive Grid JET Charts 5.1 2018 A History JavaScript in APEX 2019 18.x Additional JET Charts JET based auto-complete
  • 31. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 31 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 1.6 Incorporating JavaScript is documented 3.0 4.0 Dynamic Actions jQuery & other libs included Page level attributes for JavaScript added Tree View Cascading LOVs Plug-ins 2.x htmldb_Get 5.0 Page Designer Modal Dialogs Theme Roller FullCalendar 4.1 3.2 jQuery Mobile HTML5 & responsive design 4.2 Interactive Reports (IR) apex namespace introduced JavaScript compressed by default 3.1 Interactive Grid JET Charts 5.1 2018 A History JavaScript in APEX 2019 18.x Additional JET Charts JET based auto-complete 19.x JavaScript API doc overhaul Simplified modal regions *New Popup LOV *Filter Reports
  • 32. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | It often takes just a few lines of JavaScript to deliver functionality not available out-of-the-box
  • 33. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | It often takes just a few lines of JavaScript to deliver functionality not available out-of-the-box Your goal is not to be the master…
  • 34. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | It often takes just a few lines of JavaScript to deliver functionality not available out-of-the-box Your goal is not to be the master… Just know enough to be dangerous!
  • 35. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | How much do you need to know to be dangerous?
  • 36. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Functions Variables Conditionals Loops JavaScript
  • 37. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Functions Variables Conditionals Loops JavaScript Traversing Manipulation Events Ajax DOM/jQuery
  • 38. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Functions Variables Conditionals Loops JavaScript APEX APIs apex apex.item apex.region Traversing Manipulation Events Ajax DOM/jQuery apex.server
  • 39. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
  • 40. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
  • 41. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 1 Dynamic Action 2 lines of JavaScript Solution:
  • 42. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 1 Dynamic Action 2 lines of JavaScript Solution: ($("td[headers='LINK']").length==1) apex.navigation.redirect($("td[headers='LINK'] a").attr("href"));
  • 43. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
  • 44. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | ($("td[headers='LINK']").length==1) Conditional Expression
  • 45. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | ($("td[headers='LINK']").length==1) Conditional Expression
  • 46. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | $("td[headers='LINK']").length==1 Conditional Expression
  • 47. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | $("td[headers='LINK']").length==1 Conditional Expression
  • 48. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | $("td[headers='LINK']").length==1 Conditional Expression $ = jQuery
  • 49. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | $("td[headers='LINK']").length==1 $ = jQuery jQuery is a function Conditional Expression
  • 50. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | $("td[headers='LINK']").length==1 $ = jQuery jQuery is a function functions are invoked with parentheses Conditional Expression
  • 51. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | $("td[headers='LINK']").length==1 $ = jQuery jQuery is a function functions are invoked with parentheses a string is passed as a parameter Conditional Expression
  • 52. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | <html lang="en"> <head> <script src="/i/libraries/jquery/3.3.1/jquery-3.3.1.js"></script> </head> <body> <div class="question-wrapper"> <div><h1 id="question">How are you feeling?</h1> <div>Here are the six basic emotions:</div> <ul id="emotions-list"> <li class="positive">Happy</li> <li class="negative">Sad</li> <li class="negative">Fearful</li> <li class="negative">Disgusted</li> <li class="negative">Angry</li> <li class="neutral">Surprised</li> </ul> </div> <input type="text" name="feeling"> <input type="button" value="Submit"> </div> </body> </html>
  • 53. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | https://en.wikipedia.org/wiki/Paul_Ekman
  • 54. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | <html lang="en"> <head> <script src="/i/libraries/jquery/3.3.1/jquery-3.3.1.js"></script> </head> <body> <div class="question-wrapper"> <div><h1 id="question">How are you feeling?</h1> <div>Here are the six basic emotions:</div> <ul id="emotions-list"> <li class="positive">Happy</li> <li class="negative">Sad</li> <li class="negative">Fearful</li> <li class="negative">Disgusted</li> <li class="negative">Angry</li> <li class="neutral">Surprised</li> </ul> </div> <input type="text" name="feeling"> <input type="button" value="Submit"> </div> </body> </html>
  • 55. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Basic Selectors ID Class Element
  • 56. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | $("#question") Basic Selectors <div class="question-wrapper"> <div><h1 id="question">How are you feeling?</h1> <div>Here are the six basic emotions:</div> <ul id="emotions-list"> <li class="positive">Happy</li> <li class="negative">Sad</li> <li class="negative">Fearful</li> <li class="negative">Disgusted</li> <li class="negative">Angry</li> <li class="neutral">Surprised</li> </ul> </div> <input type="text" name="feeling"> <input type="button" value="Submit"> </div> ID Class Element
  • 57. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | $("#emotions-list") Basic Selectors <div class="question-wrapper"> <div><h1 id="question">How are you feeling?</h1> <div>Here are the six basic emotions:</div> <ul id="emotions-list"> <li class="positive">Happy</li> <li class="negative">Sad</li> <li class="negative">Fearful</li> <li class="negative">Disgusted</li> <li class="negative">Angry</li> <li class="neutral">Surprised</li> </ul> </div> <input type="text" name="feeling"> <input type="button" value="Submit"> </div> ID Class Element
  • 58. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | $(".positive") Basic Selectors <div class="question-wrapper"> <div><h1 id="question">How are you feeling?</h1> <div>Here are the six basic emotions:</div> <ul id="emotions-list"> <li class="positive">Happy</li> <li class="negative">Sad</li> <li class="negative">Fearful</li> <li class="negative">Disgusted</li> <li class="negative">Angry</li> <li class="neutral">Surprised</li> </ul> </div> <input type="text" name="feeling"> <input type="button" value="Submit"> </div> ID Class Element
  • 59. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | $(".negative") Basic Selectors <div class="question-wrapper"> <div><h1 id="question">How are you feeling?</h1> <div>Here are the six basic emotions:</div> <ul id="emotions-list"> <li class="positive">Happy</li> <li class="negative">Sad</li> <li class="negative">Fearful</li> <li class="negative">Disgusted</li> <li class="negative">Angry</li> <li class="neutral">Surprised</li> </ul> </div> <input type="text" name="feeling"> <input type="button" value="Submit"> </div> ID Class Element
  • 60. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | $("div") Basic Selectors <div class="question-wrapper"> <div><h1 id="question">How are you feeling?</h1> <div>Here are the six basic emotions:</div> <ul id="emotions-list"> <li class="positive">Happy</li> <li class="negative">Sad</li> <li class="negative">Fearful</li> <li class="negative">Disgusted</li> <li class="negative">Angry</li> <li class="neutral">Surprised</li> </ul> </div> <input type="text" name="feeling"> <input type="button" value="Submit"> </div> ID Class Element
  • 61. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | $("input") Basic Selectors <div class="question-wrapper"> <div><h1 id="question">How are you feeling?</h1> <div>Here are the six basic emotions:</div> <ul id="emotions-list"> <li class="positive">Happy</li> <li class="negative">Sad</li> <li class="negative">Fearful</li> <li class="negative">Disgusted</li> <li class="negative">Angry</li> <li class="neutral">Surprised</li> </ul> </div> <input type="text" name="feeling"> <input type="button" value="Submit"> </div> ID Class Element
  • 62. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Hierarchical Selectors Child Descendant
  • 63. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | $(".question-wrapper") Hierarchical Selectors <div class="question-wrapper"> <div><h1 id="question">How are you feeling?</h1> <div>Here are the six basic emotions:</div> <ul id="emotions-list"> <li class="positive">Happy</li> <li class="negative">Sad</li> <li class="negative">Fearful</li> <li class="negative">Disgusted</li> <li class="negative">Angry</li> <li class="neutral">Surprised</li> </ul> </div> <input type="text" name="feeling"> <input type="button" value="Submit"> </div> Child Descendant
  • 64. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | $(".question-wrapper > div") Hierarchical Selectors <div class="question-wrapper"> <div><h1 id="question">How are you feeling?</h1> <div>Here are the six basic emotions:</div> <ul id="emotions-list"> <li class="positive">Happy</li> <li class="negative">Sad</li> <li class="negative">Fearful</li> <li class="negative">Disgusted</li> <li class="negative">Angry</li> <li class="neutral">Surprised</li> </ul> </div> <input type="text" name="feeling"> <input type="button" value="Submit"> </div> Child Descendant
  • 65. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | $(".question-wrapper div") Hierarchical Selectors <div class="question-wrapper"> <div><h1 id="question">How are you feeling?</h1> <div>Here are the six basic emotions:</div> <ul id="emotions-list"> <li class="positive">Happy</li> <li class="negative">Sad</li> <li class="negative">Fearful</li> <li class="negative">Disgusted</li> <li class="negative">Angry</li> <li class="neutral">Surprised</li> </ul> </div> <input type="text" name="feeling"> <input type="button" value="Submit"> </div> Child Descendant
  • 66. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Other Selectors Form Content Attribute
  • 67. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | $(":button") Other Selectors <div class="question-wrapper"> <div><h1 id="question">How are you feeling?</h1> <div>Here are the six basic emotions:</div> <ul id="emotions-list"> <li class="positive">Happy</li> <li class="negative">Sad</li> <li class="negative">Fearful</li> <li class="negative">Disgusted</li> <li class="negative">Angry</li> <li class="neutral">Surprised</li> </ul> </div> <input type="text" name="feeling"> <input type="button" value="Submit"> </div> Form Content Attribute
  • 68. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | $(":contains(are)") Other Selectors <div class="question-wrapper"> <div><h1 id="question">How are you feeling?</h1> <div>Here are the six basic emotions:</div> <ul id="emotions-list"> <li class="positive">Happy</li> <li class="negative">Sad</li> <li class="negative">Fearful</li> <li class="negative">Disgusted</li> <li class="negative">Angry</li> <li class="neutral">Surprised</li> </ul> </div> <input type="text" name="feeling"> <input type="button" value="Submit"> </div> Form Content Attribute Plus: • html • body
  • 69. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | $("[type]") Other Selectors <div class="question-wrapper"> <div><h1 id="question">How are you feeling?</h1> <div>Here are the six basic emotions:</div> <ul id="emotions-list"> <li class="positive">Happy</li> <li class="negative">Sad</li> <li class="negative">Fearful</li> <li class="negative">Disgusted</li> <li class="negative">Angry</li> <li class="neutral">Surprised</li> </ul> </div> <input type="text" name="feeling"> <input type="button" value="Submit"> </div> Form Content Attribute
  • 70. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | $("[type='text']") Other Selectors <div class="question-wrapper"> <div><h1 id="question">How are you feeling?</h1> <div>Here are the six basic emotions:</div> <ul id="emotions-list"> <li class="positive">Happy</li> <li class="negative">Sad</li> <li class="negative">Fearful</li> <li class="negative">Disgusted</li> <li class="negative">Angry</li> <li class="neutral">Surprised</li> </ul> </div> <input type="text" name="feeling"> <input type="button" value="Submit"> </div> Form Content Attribute
  • 71. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | $("input[type='text']") Other Selectors <div class="question-wrapper"> <div><h1 id="question">How are you feeling?</h1> <div>Here are the six basic emotions:</div> <ul id="emotions-list"> <li class="positive">Happy</li> <li class="negative">Sad</li> <li class="negative">Fearful</li> <li class="negative">Disgusted</li> <li class="negative">Angry</li> <li class="neutral">Surprised</li> </ul> </div> <input type="text" name="feeling"> <input type="button" value="Submit"> </div> Form Content Attribute
  • 72. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | $("td[headers='LINK']").length==1 $ = jQuery jQuery is a function functions are invoked with parentheses a string is passed as a parameter Conditional Expression
  • 73. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | But how did they know to use that selector?
  • 74. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
  • 75. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
  • 76. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | $("td[headers='LINK']").length==1 Conditional Expression the object returned is a wrapper for the selected elements
  • 77. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | $("td[headers='LINK']").length==1 ‘length’ provides a count of the elements Conditional Expression the object returned is a wrapper for the selected elements
  • 78. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | $("td[headers='LINK']").length==1 the condition is checking for a single row Conditional Expression ‘length’ provides a count of the elements the object returned is a wrapper for the selected elements
  • 79. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
  • 80. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 1 Dynamic Action 2 lines of JavaScript Solution: ($("td[headers='LINK']").length==1) apex.navigation.redirect($("td[headers='LINK'] a").attr("href"));
  • 81. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 1 Dynamic Action 2 lines of JavaScript Solution: ($("td[headers='LINK']").length==1) apex.navigation.redirect($("td[headers='LINK'] a").attr("href")); 😅
  • 82. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
  • 83. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | apex.navigation.redirect($("td[headers='LINK'] a").attr("href")); Execute JavaScript
  • 84. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | apex.navigation.redirect($("td[headers='LINK'] a").attr("href")); Execute JavaScript apex is a namespace
  • 85. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | apex.navigation.redirect($("td[headers='LINK'] a").attr("href")); Execute JavaScript apex is a namespace navigation is a namespace
  • 86. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | apex.navigation.redirect($("td[headers='LINK'] a").attr("href")); Execute JavaScript apex is a namespace navigation is a namespace redirect is a function, you already know what it does
  • 87. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | apex.navigation.redirect($("td[headers='LINK'] a").attr("href")); Execute JavaScript this is an attribute and hierarchical selector combined
  • 88. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | apex.navigation.redirect($("td[headers='LINK'] a").attr("href")); Execute JavaScript it selects an anchor element within a table data element this is an attribute and hierarchical selector combined
  • 89. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | apex.navigation.redirect($("td[headers='LINK'] a").attr("href")); Execute JavaScript it selects an anchor element within a table data element this is an attribute and hierarchical selector combined attr is a jQuery method
  • 90. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Basic Methods Traversal Attribute Manipulation
  • 91. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Basic Methods Traversal Attribute Manipulation $("#question") <div class="question-wrapper"> <div><h1 id="question">How are you feeling?</h1> <div>Here are the six basic emotions:</div> <ul id="emotions-list"> <li class="positive">Happy</li> <li class="negative">Sad</li> <li class="negative">Fearful</li> <li class="negative">Disgusted</li> <li class="negative">Angry</li> <li class="neutral">Surprised</li> </ul> </div> <input type="text" name="feeling"> <input type="button" value="Submit"> </div>
  • 92. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Basic Methods Traversal Attribute Manipulation $("#question").parent() <div class="question-wrapper"> <div><h1 id="question">How are you feeling?</h1> <div>Here are the six basic emotions:</div> <ul id="emotions-list"> <li class="positive">Happy</li> <li class="negative">Sad</li> <li class="negative">Fearful</li> <li class="negative">Disgusted</li> <li class="negative">Angry</li> <li class="neutral">Surprised</li> </ul> </div> <input type="text" name="feeling"> <input type="button" value="Submit"> </div>
  • 93. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Basic Methods Traversal Attribute Manipulation $("#question").parent().find("li") <div class="question-wrapper"> <div><h1 id="question">How are you feeling?</h1> <div>Here are the six basic emotions:</div> <ul id="emotions-list"> <li class="positive">Happy</li> <li class="negative">Sad</li> <li class="negative">Fearful</li> <li class="negative">Disgusted</li> <li class="negative">Angry</li> <li class="neutral">Surprised</li> </ul> </div> <input type="text" name="feeling"> <input type="button" value="Submit"> </div>
  • 94. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Basic Methods Traversal Attribute Manipulation $("#question").parent().find("li").eq(2) <div class="question-wrapper"> <div><h1 id="question">How are you feeling?</h1> <div>Here are the six basic emotions:</div> <ul id="emotions-list"> <li class="positive">Happy</li> <li class="negative">Sad</li> <li class="negative">Fearful</li> <li class="negative">Disgusted</li> <li class="negative">Angry</li> <li class="neutral">Surprised</li> </ul> </div> <input type="text" name="feeling"> <input type="button" value="Submit"> </div>
  • 95. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Basic Methods Traversal Attribute Manipulation $(".neutral") <div class="question-wrapper"> <div><h1 id="question">How are you feeling?</h1> <div>Here are the six basic emotions:</div> <ul id="emotions-list"> <li class="positive">Happy</li> <li class="negative">Sad</li> <li class="negative">Fearful</li> <li class="negative">Disgusted</li> <li class="negative">Angry</li> <li class="neutral">Surprised</li> </ul> </div> <input type="text" name="feeling"> <input type="button" value="Submit"> </div>
  • 96. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Basic Methods Traversal Attribute Manipulation $(".neutral").addClass("positive") <div class="question-wrapper"> <div><h1 id="question">How are you feeling?</h1> <div>Here are the six basic emotions:</div> <ul id="emotions-list"> <li class="positive">Happy</li> <li class="negative">Sad</li> <li class="negative">Fearful</li> <li class="negative">Disgusted</li> <li class="negative">Angry</li> <li class="neutral positive">Surprised</li> </ul> </div> <input type="text" name="feeling"> <input type="button" value="Submit"> </div>
  • 97. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Basic Methods Traversal Attribute Manipulation $(".neutral").addClass("positive").removeClass("neutral") <div class="question-wrapper"> <div><h1 id="question">How are you feeling?</h1> <div>Here are the six basic emotions:</div> <ul id="emotions-list"> <li class="positive">Happy</li> <li class="negative">Sad</li> <li class="negative">Fearful</li> <li class="negative">Disgusted</li> <li class="negative">Angry</li> <li class="positive">Surprised</li> </ul> </div> <input type="text" name="feeling"> <input type="button" value="Submit"> </div>
  • 98. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Basic Methods Traversal Attribute Manipulation $("input[type='text']") <div class="question-wrapper"> <div><h1 id="question">How are you feeling?</h1> <div>Here are the six basic emotions:</div> <ul id="emotions-list"> <li class="positive">Happy</li> <li class="negative">Sad</li> <li class="negative">Fearful</li> <li class="negative">Disgusted</li> <li class="negative">Angry</li> <li class="positive">Surprised</li> </ul> </div> <input type="text" name="feeling"> <input type="button" value="Submit"> </div>
  • 99. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Basic Methods Traversal Attribute Manipulation $("input[type='text’]").attr("disabled", "disabled") <div class="question-wrapper"> <div><h1 id="question">How are you feeling?</h1> <div>Here are the six basic emotions:</div> <ul id="emotions-list"> <li class="positive">Happy</li> <li class="negative">Sad</li> <li class="negative">Fearful</li> <li class="negative">Disgusted</li> <li class="negative">Angry</li> <li class="positive">Surprised</li> </ul> </div> <input type="text" name="feeling" disabled="disabled"> <input type="button" value="Submit"> </div>
  • 100. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Basic Methods Traversal Attribute Manipulation $("#question") <div class="question-wrapper"> <div><h1 id="question">How are you feeling?</h1> <div>Here are the six basic emotions:</div> <ul id="emotions-list"> <li class="positive">Happy</li> <li class="negative">Sad</li> <li class="negative">Fearful</li> <li class="negative">Disgusted</li> <li class="negative">Angry</li> <li class="neutral">Surprised</li> </ul> </div> <input type="text" name="feeling"> <input type="button" value="Submit"> </div>
  • 101. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Basic Methods Attribute $("#question").text("How do you feel?") <div class="question-wrapper"> <div><h1 id="question">How do you feel?</h1> <div>Here are the six basic emotions:</div> <ul id="emotions-list"> <li class="positive">Happy</li> <li class="negative">Sad</li> <li class="negative">Fearful</li> <li class="negative">Disgusted</li> <li class="negative">Angry</li> <li class="neutral">Surprised</li> </ul> </div> <input type="text" name="feeling"> <input type="button" value="Submit"> </div> Traversal Manipulation
  • 102. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Basic Methods Traversal Attribute Manipulation $("#emotions-list") <div class="question-wrapper"> <div><h1 id="question">How are you feeling?</h1> <div>Here are the six basic emotions:</div> <ul id="emotions-list"> <li class="positive">Happy</li> <li class="negative">Sad</li> <li class="negative">Fearful</li> <li class="negative">Disgusted</li> <li class="negative">Angry</li> <li class="neutral">Surprised</li> </ul> </div> <input type="text" name="feeling"> <input type="button" value="Submit"> </div>
  • 103. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Basic Methods Traversal Attribute Manipulation $("#emotions-list").append('<li class="positive">Amusement</li>') <div class="question-wrapper"> <div><h1 id="question">How are you feeling?</h1> <div>Here are the six basic emotions:</div> <ul id="emotions-list"> <li class="positive">Happy</li> <li class="negative">Sad</li> <li class="negative">Fearful</li> <li class="negative">Disgusted</li> <li class="negative">Angry</li> <li class="neutral">Surprised</li> <li class="positive">Amusement</li> </ul> </div> <input type="text" name="feeling"> <input type="button" value="Submit"> </div>
  • 104. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | apex.navigation.redirect($("td[headers='LINK'] a").attr("href")); Execute JavaScript it selects an anchor element within a table data element this is an attribute and hierarchical selector combined attr is a jQuery method
  • 105. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | But how did they know to use that selector and target that attribute?
  • 106. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
  • 107. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | But how often are just a few lines of code really that useful?
  • 108. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | https://rimblas.com/blog/2019/02/add-a-reset-button-to-your-interactive-reports/ 5 lines of JavaScript code
  • 109. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | https://explorer.co.uk/calling-plsql-from-javascript/ Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | https://explorer.co.uk/calling-plsql-from-javascript/ 31 lines of JavaScript code
  • 110. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | JavaScript is Weird
  • 111. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | JavaScript is Weird It was weird from the start…
  • 112. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
  • 113. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Is it accurate? Is it correct?
  • 114. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
  • 115. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 1 + 2 = ? In JavaScript…
  • 116. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 1 + 2 = 3 In JavaScript…
  • 117. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 1 + 2 = 3 0.1 + 0.2 = ? In JavaScript…
  • 118. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 1 + 2 = 3 0.1 + 0.2 = 0.30000000000000004 In JavaScript…
  • 119. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 1 + 2 = 3 0.1 + 0.2 = 0.30000000000000004 1.1 + 2.2 = ? In JavaScript…
  • 120. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 1 + 2 = 3 0.1 + 0.2 = 0.30000000000000004 1.1 + 2.2 = 3.3000000000000003 In JavaScript…
  • 121. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 1 === 1 // true Also, in JavaScript…
  • 122. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 1 === 1 // true 'string' === 'string' // true Also, in JavaScript…
  • 123. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 1 === 1 // true 'string' === 'string' // true [1, 2, 3] === [1, 2, 3] // false Also, in JavaScript…
  • 124. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 1 === 1 // true 'string' === 'string' // true [1, 2, 3] === [1, 2, 3] // false {name: 'value'} === {name: 'value'} // false Also, in JavaScript…
  • 125. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | IIFE
  • 126. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Immediately Invoked Function Expression
  • 127. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | IIFE
  • 128. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | (function() { var message = 'hello world'; console.log(message); })(); IIFE
  • 129. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | (function() { var message = 'hello world'; console.log(message); })(); IIFE
  • 130. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | (function() { var message = 'hello world'; console.log(message); }()); IIFE
  • 131. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | (function() { var message = 'hello world'; console.log(message); })(); IIFE
  • 132. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | To understand the IIFE one must understand functions
  • 133. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | create function get_answer return number is l_answer number := 42; begin return l_answer; end; PL/SQL
  • 134. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | create function get_answer return number is l_answer number := 42; begin return l_answer; end; function getAnswer() { var answer = 42; return answer; } PL/SQL JavaScript
  • 135. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | create function get_answer return number is l_answer number := 42; begin declare l_other number; begin l_other = l_answer * 42; end; return l_answer; end; function getAnswer() { var answer = 42; return answer; } PL/SQL JavaScript
  • 136. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | create function get_answer return number is l_answer number := 42; begin declare l_other number; begin l_other = l_answer * 42; end; return l_answer; end; function getAnswer() { var answer = 42; function childFunction() { var other = answer * 42; } return answer; } PL/SQL JavaScript
  • 137. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | <html> <head> <title>Simple web page</title> <script> (function() { var message = 'hello world'; console.log(message); })(); </script> </head> <body> <h1>Hello world!</h1> </body> </html> Webpage
  • 138. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | <html> <head> <title>Simple web page</title> <script> var message = 'hello world'; console.log(message); (function() { })(); </script> </head> <body> <h1>Hello world!</h1> </body> </html> Webpage
  • 139. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | <html> <head> <title>Simple web page</title> <script> var message = 'hello world'; console.log(message); (function() { })(); </script> </head> <body> <h1>Hello world!</h1> </body> </html> Webpage Global Global Function
  • 140. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | <html> <head> <title>Simple web page</title> <script> function initMyProgram() { var message = 'hello world'; console.log(message); } initMyProgram(); </script> </head> <body> <h1>Hello world!</h1> </body> </html> Webpage
  • 141. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | <html> <head> <title>Simple web page</title> <script> function() { var message = 'hello world'; console.log(message); } initMyProgram(); </script> </head> <body> <h1>Hello world!</h1> </body> </html> Webpage
  • 142. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | <html> <head> <title>Simple web page</title> <script> function() { var message = 'hello world'; console.log(message); } </script> </head> <body> <h1>Hello world!</h1> </body> </html> Webpage
  • 143. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | <html> <head> <title>Simple web page</title> <script> (function() { var message = 'hello world'; console.log(message); }); </script> </head> <body> <h1>Hello world!</h1> </body> </html> Webpage
  • 144. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | <html> <head> <title>Simple web page</title> <script> (function() { var message = 'hello world'; console.log(message); })(); </script> </head> <body> <h1>Hello world!</h1> </body> </html> Webpage
  • 145. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | So now you know what an IIFE is!
  • 146. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | So now you know what an IIFE is! 🤯
  • 147. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | JavaScript has come a long way since it’s humble beginnings…
  • 148. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 2019 Stack Overflow Developer Survey https://insights.stackoverflow.com/survey/2019#technology
  • 149. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | RedMonk Q119 Language Rankings http://sogrady-media.redmonk.com/sogrady/files/2019/03/lang.rank_.119.png
  • 150. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | So yeah…
  • 151. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | So yeah… JavaScript is Weird
  • 152. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | But JavaScript is also… Powerful Flexible Highly In-demand
  • 153. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Most importantly, you need to learn JavaScript to become a great APEX developer.
  • 154. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
  • 155. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | If you were to give an APEX developer two recommendations for getting starting with JavaScript, what would they be?
  • 156. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Peter Raganitsch Read up on jQuery Learn about APEX JS APIs
  • 157. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Jorge Rimblas I would direct them to my JS/CSS talk for PL/SQL developers 😁
  • 158. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | John Scott The thing that helped me best with getting started was a good Editor Plugin which helps with Intellisense, Auto- complete, Formatting, etc... Also JSFiddle for quick prototyping, looking at other peoples samples, etc
  • 159. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
  • 160. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Christoph Ruepprich I have had good success with Pluralsight’s Node.js course And my favorite JS guru on YouTube: FunFunFunction
  • 161. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
  • 162. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Adrian Png Websites - MDN web docs (for reference) Books - JavaScript: The Definitive Guide (still waiting for the 7th edition) Other than that... Web page inspection tools are great for learning. :-)
  • 163. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | John Snyders One thing I would highly recommend is JavaScript the Good Parts by Douglas Crockford Also his web site
  • 164. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
  • 165. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | John Brock “JB” Choose a sample app topic that interests you (movie database, car details, etc), and try to build that same sample app in multiple different frameworks/toolkits/libraries as you learn. Learn "JavaScript" not jQuery first. Understand what it means to manipulate the DOM structure using real JavaScript before you use a shortcut like jQuery. It will serve you better down the road to know what is going on behind the scenes.
  • 166. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | John Brock “JB” Even at your earliest stages of writing code, add comments about what you are trying to with a section of code. Ex. what a function is supposed to do and return. As you learn more and return to these samples, you may want to refactor those areas with things that you know more about. Know your audience. From a client perspective, what browsers are you going to have to support. If there are any older versions, it will limit what you can and can't do with more modern JS practices. Ex. IE11 doesn't support arrow functions.
  • 167. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | John Brock “JB” Even at your earliest stages of writing code, add comments about what you are trying to with a section of code. Ex. what a function is supposed to do and return. As you learn more and return to these samples, you may want to refactor those areas with things that you know more about. Know your audience. From a client perspective, what browsers are you going to have to support. If there are any older versions, it will limit what you can and can't do with more modern JS practices. Ex. IE11 doesn't support arrow functions. I think that's enough. :-)
  • 168. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Vincent Morneau So here's my 2 cents
  • 169. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Vincent Morneau So here's my 2 cents Follow web tech leaders that blog about complicated stuff, in a simple way. • David Walsh • Addy Osmani • Jake Archibald • Paul Irish
  • 170. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Vincent Morneau So here's my 2 cents Follow web tech leaders that blog about complicated stuff, in a simple way. • David Walsh • Addy Osmani • Jake Archibald • Paul Irish Embrace ES6, as it will inevitably make it to all browsers. In most cases, it simplifies the code.
  • 171. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Vincent Morneau So here's my 2 cents Follow web tech leaders that blog about complicated stuff, in a simple way. • David Walsh • Addy Osmani • Jake Archibald • Paul Irish Embrace ES6, as it will inevitably make it to all browsers. In most cases, it simplifies the code. READ CODE from popular Open Source projects
  • 172. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Vincent Morneau So here's my 2 cents Follow web tech leaders that blog about complicated stuff, in a simple way. • David Walsh • Addy Osmani • Jake Archibald • Paul Irish Embrace ES6, as it will inevitably make it to all browsers. In most cases, it simplifies the code. READ CODE from popular Open Source projects FORK repos and play around
  • 173. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Vincent Morneau Final thoughts: there is no escaping JS. As a a large scale app grows, requirements will grow too and you can't do everything in PL/SQL. Don't be the average dev :)
  • 174. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
  • 175. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | GemmaWood
  • 176. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Ready to learn more?
  • 177. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Pluralsight Paths and Courses • JavaScript Path – https://www.pluralsight.com/paths/javascript • Node.js Path – https://www.pluralsight.com/paths/node-js • JavaScript Fundamentals for ES6 – https://www.pluralsight.com/courses/javascript-fundamentals-es6 • Rapid ES6 Training – https://www.pluralsight.com/courses/rapid-es6-training
  • 178. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Books • You Don’t Know JS – https://github.com/getify/You-Dont-Know-JS • JavaScript: The Definitive Guide – http://a.co/6cJjHci • JavaScript the Good Parts – http://a.co/dx74PuS
  • 179. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | jQuery • Online Tutorial: Code Academy – https://www.codecademy.com/learn/learn-jquery • Book: A Smarter Way to Learn jQuery – http://a.co/e9Jzxnx • API Doc – http://api.jquery.com/
  • 180. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | APEX JavaScript APIs • APEX 19.1 – https://docs.oracle.com/en/database/oracle/application- express/19.1/aexjs/index.html • APEX 18.1 – https://docs.oracle.com/database/apex-18.1/AEXJS/index.html • APEX 5.2 – https://docs.oracle.com/database/apex-5.1/AEAPI/JavaScript-APIs.htm#AEAPI266 • APEX 5.1 – https://docs.oracle.com/database/apex-5.1/AEAPI/JavaScript-APIs.htm#AEAPI266
  • 181. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Developer Tools & Fiddles • Chrome Developer Tools – https://developers.google.com/web/tools/chrome-devtools/ • JSFiddle – https://jsfiddle.net/ • CodePen – http://codepen.io/ • JS Bin – http://jsbin.com
  • 182. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Editors & plug-ins • VS Code – https://code.visualstudio.com/ – https://code.visualstudio.com/docs/nodejs/extensions • Atom – https://atom.io/ – https://atom.io/packages • NetBeans – https://netbeans.org/ – http://plugins.netbeans.org/
  • 183. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | YouTube • Fun Fun Function – https://www.youtube.com/channel/UCO1cgjhGzsSYb1rsB4bFe4Q • What the heck is the event loop anyway – https://www.youtube.com/watch?v=8aGhZQkoFbQ
  • 184. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Web Leaders on Twitter • David Walsh – https://twitter.com/davidwalshblog • Addy Osmani – https://twitter.com/addyosmani • Jake Archibald – https://twitter.com/jaffathecake • Paul Irish – https://twitter.com/paul_irish
  • 185. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Other • Free, 134 part course for beginners – https://www.freecodecamp.org/news/learn-javascript-full-course/ • Weekly newsletter on JavaScript – https://javascriptweekly.com/ • 30 Seconds of Code – https://30secondsofcode.org/ • Jorge’s talk on JavaScript and CSS for PL/SQL developers – http://slides.com/rimblas/javascript-and-css-for-plsql-developers • Mozilla Developer Network (see “Tutorials” on the left) – https://developer.mozilla.org/en-US/docs/Web/JavaScript

Editor's Notes

  • #8: The theme is the same, you save time and money And it’s not just APEX, it’s your business knowledge combined with a tool like APEX that brings the vision to life So I’m not going to get up here and tell you that you should learn JavaScript to… A) Switch from APEX to a JavaScript framework or B) start adding hundreds or thousands of lines of JavaScript code to your APEX applications That wouldn’t be practical, and frankly, why mess with success?
  • #14: <David: To fix the graphic> Originally named HTML DB when first released. The current release of Oracle APEX is APEX 18.1, consistent with the release numbering for the Oracle Database as well as Oracle REST Data Services and Oracle Cloud services. Coincidentally, it has been a little over 18 years since the first line of code was written for APEX. Throughout this time, we have always strived to empower developers with the tools they need to build modern apps fast, with less effort, and with greater consistency. See Statement of Direction for future direction on OTN under Learn More [http://www.oracle.com/technetwork/developer-tools/apex/application-express/apex-sod-087560.html]
  • #18: <David: To fix the graphic> Originally named HTML DB when first released. The current release of Oracle APEX is APEX 18.1, consistent with the release numbering for the Oracle Database as well as Oracle REST Data Services and Oracle Cloud services. Coincidentally, it has been a little over 18 years since the first line of code was written for APEX. Throughout this time, we have always strived to empower developers with the tools they need to build modern apps fast, with less effort, and with greater consistency. See Statement of Direction for future direction on OTN under Learn More [http://www.oracle.com/technetwork/developer-tools/apex/application-express/apex-sod-087560.html]
  • #19: <David: To fix the graphic> Originally named HTML DB when first released. The current release of Oracle APEX is APEX 18.1, consistent with the release numbering for the Oracle Database as well as Oracle REST Data Services and Oracle Cloud services. Coincidentally, it has been a little over 18 years since the first line of code was written for APEX. Throughout this time, we have always strived to empower developers with the tools they need to build modern apps fast, with less effort, and with greater consistency. See Statement of Direction for future direction on OTN under Learn More [http://www.oracle.com/technetwork/developer-tools/apex/application-express/apex-sod-087560.html]
  • #20: <David: To fix the graphic> Originally named HTML DB when first released. The current release of Oracle APEX is APEX 18.1, consistent with the release numbering for the Oracle Database as well as Oracle REST Data Services and Oracle Cloud services. Coincidentally, it has been a little over 18 years since the first line of code was written for APEX. Throughout this time, we have always strived to empower developers with the tools they need to build modern apps fast, with less effort, and with greater consistency. See Statement of Direction for future direction on OTN under Learn More [http://www.oracle.com/technetwork/developer-tools/apex/application-express/apex-sod-087560.html]
  • #22: <David: To fix the graphic> Originally named HTML DB when first released. The current release of Oracle APEX is APEX 18.1, consistent with the release numbering for the Oracle Database as well as Oracle REST Data Services and Oracle Cloud services. Coincidentally, it has been a little over 18 years since the first line of code was written for APEX. Throughout this time, we have always strived to empower developers with the tools they need to build modern apps fast, with less effort, and with greater consistency. See Statement of Direction for future direction on OTN under Learn More [http://www.oracle.com/technetwork/developer-tools/apex/application-express/apex-sod-087560.html]
  • #23: <David: To fix the graphic> Originally named HTML DB when first released. The current release of Oracle APEX is APEX 18.1, consistent with the release numbering for the Oracle Database as well as Oracle REST Data Services and Oracle Cloud services. Coincidentally, it has been a little over 18 years since the first line of code was written for APEX. Throughout this time, we have always strived to empower developers with the tools they need to build modern apps fast, with less effort, and with greater consistency. See Statement of Direction for future direction on OTN under Learn More [http://www.oracle.com/technetwork/developer-tools/apex/application-express/apex-sod-087560.html]
  • #24: <David: To fix the graphic> Originally named HTML DB when first released. The current release of Oracle APEX is APEX 18.1, consistent with the release numbering for the Oracle Database as well as Oracle REST Data Services and Oracle Cloud services. Coincidentally, it has been a little over 18 years since the first line of code was written for APEX. Throughout this time, we have always strived to empower developers with the tools they need to build modern apps fast, with less effort, and with greater consistency. See Statement of Direction for future direction on OTN under Learn More [http://www.oracle.com/technetwork/developer-tools/apex/application-express/apex-sod-087560.html]
  • #26: <David: To fix the graphic> Originally named HTML DB when first released. The current release of Oracle APEX is APEX 18.1, consistent with the release numbering for the Oracle Database as well as Oracle REST Data Services and Oracle Cloud services. Coincidentally, it has been a little over 18 years since the first line of code was written for APEX. Throughout this time, we have always strived to empower developers with the tools they need to build modern apps fast, with less effort, and with greater consistency. See Statement of Direction for future direction on OTN under Learn More [http://www.oracle.com/technetwork/developer-tools/apex/application-express/apex-sod-087560.html]
  • #27: <David: To fix the graphic> Originally named HTML DB when first released. The current release of Oracle APEX is APEX 18.1, consistent with the release numbering for the Oracle Database as well as Oracle REST Data Services and Oracle Cloud services. Coincidentally, it has been a little over 18 years since the first line of code was written for APEX. Throughout this time, we have always strived to empower developers with the tools they need to build modern apps fast, with less effort, and with greater consistency. See Statement of Direction for future direction on OTN under Learn More [http://www.oracle.com/technetwork/developer-tools/apex/application-express/apex-sod-087560.html]
  • #28: <David: To fix the graphic> Originally named HTML DB when first released. The current release of Oracle APEX is APEX 18.1, consistent with the release numbering for the Oracle Database as well as Oracle REST Data Services and Oracle Cloud services. Coincidentally, it has been a little over 18 years since the first line of code was written for APEX. Throughout this time, we have always strived to empower developers with the tools they need to build modern apps fast, with less effort, and with greater consistency. See Statement of Direction for future direction on OTN under Learn More [http://www.oracle.com/technetwork/developer-tools/apex/application-express/apex-sod-087560.html]
  • #29: <David: To fix the graphic> Originally named HTML DB when first released. The current release of Oracle APEX is APEX 18.1, consistent with the release numbering for the Oracle Database as well as Oracle REST Data Services and Oracle Cloud services. Coincidentally, it has been a little over 18 years since the first line of code was written for APEX. Throughout this time, we have always strived to empower developers with the tools they need to build modern apps fast, with less effort, and with greater consistency. See Statement of Direction for future direction on OTN under Learn More [http://www.oracle.com/technetwork/developer-tools/apex/application-express/apex-sod-087560.html]
  • #30: <David: To fix the graphic> Originally named HTML DB when first released. The current release of Oracle APEX is APEX 18.1, consistent with the release numbering for the Oracle Database as well as Oracle REST Data Services and Oracle Cloud services. Coincidentally, it has been a little over 18 years since the first line of code was written for APEX. Throughout this time, we have always strived to empower developers with the tools they need to build modern apps fast, with less effort, and with greater consistency. See Statement of Direction for future direction on OTN under Learn More [http://www.oracle.com/technetwork/developer-tools/apex/application-express/apex-sod-087560.html]
  • #31: <David: To fix the graphic> Originally named HTML DB when first released. The current release of Oracle APEX is APEX 18.1, consistent with the release numbering for the Oracle Database as well as Oracle REST Data Services and Oracle Cloud services. Coincidentally, it has been a little over 18 years since the first line of code was written for APEX. Throughout this time, we have always strived to empower developers with the tools they need to build modern apps fast, with less effort, and with greater consistency. See Statement of Direction for future direction on OTN under Learn More [http://www.oracle.com/technetwork/developer-tools/apex/application-express/apex-sod-087560.html]
  • #32: <David: To fix the graphic> Originally named HTML DB when first released. The current release of Oracle APEX is APEX 18.1, consistent with the release numbering for the Oracle Database as well as Oracle REST Data Services and Oracle Cloud services. Coincidentally, it has been a little over 18 years since the first line of code was written for APEX. Throughout this time, we have always strived to empower developers with the tools they need to build modern apps fast, with less effort, and with greater consistency. See Statement of Direction for future direction on OTN under Learn More [http://www.oracle.com/technetwork/developer-tools/apex/application-express/apex-sod-087560.html]
  • #49: Why not just reference jQuery? Because JavaScript developers prefer brevity to clarity. This is something everyone here should aspire to as they get into JavaScript. If no one can read your code, you’re on to something!
  • #80: And that, ladies and gentlemen, is what this condition is doing.
  • #115: This guy, Brenden Eich, created JavaScript in 10 days, because of a conference And the name: JavaScript At first they called it Mocha Then LiveScript Finally settle on JavaScript That’s weird right?
  • #148: This guy, Brenden Eich, created JavaScript in 10 days, because of a conference And the name: JavaScript At first they called it Mocha Then LiveScript Finally settle on JavaScript That’s weird right?