Dynamic HTML (DHTML) is a combination of web technologies used to create interactive and animated web pages that can respond to user actions without requiring a page reload. To create DHTML, you need to have a good understanding of HTML, XHTML, CSS, JavaScript, and the Document Object Model (DOM). JavaScript is a programming language used to create interactive effects and dynamic content in web pages. It has a simple syntax and can be embedded in HTML pages. Pop-up boxes are a common JavaScript feature used to display messages or alerts to users. Debugging is an essential process in JavaScript development to find and fix errors in the code. Overall, these topics are essential for web developers to create engaging and dynamic web pages using JavaScript and related technologies.
Topics covered:
- Dynamic HTML
- How to Create DHTML?
- XHTML, CSS, JavaScript, DOM
- Intro to JavaScript
- JavaScript in Web Pages
- JavaScript Syntax
- Pop-up boxes
- Debugging in JavaScript
Video (in Bulgarian)
Presentation Content
What is DHTML?
- Dynamic HTML ( DHTML )
- Makes possible a Web page to react and change in response to the user’s actions
- DHTML consists of HTML + CSS + JavaScript
DTHML = HTML + CSS + JavaScript
- HTML defines Web sites content through semantic tags (headings, paragraphs, lists, …)
- CSS defines 'rules ’ or 'styles ’ for presenting every aspect of an HTML document
- Font (family, size, color, weight, etc.)
- Background (color, image, position, repeat)
- Position and layout (of any object on the page)
- JavaScript defines dynamic behavior
- Programming logic for interaction with the user, to handle events, etc.
JavaScript
- JavaScript is a front-end scripting language developed by Netscape for dynamic content
- Lightweight, but with limited capabilities
- Can be used as object-oriented language
- Embedded in your HTML page
- Interpreted by the Web browser
- Client-side , mobile and desktop technology
- Simple and flexible
- Powerful to manipulate the DOM
JavaScript Advantages
- JavaScript allows interactivity such as:
- Implementing form validation
- React to user actions, e.g. handle keys
- Changing an image on moving mouse over it
- Sections of a page appearing and disappearing
- Content loading and changing dynamically
- Performing complex calculations
- Custom HTML controls, e.g. scrollable table
- Implementing AJAX functionality
What Can JavaScript Do?
- Can handle events
- Can read and write HTML elements and modify the DOM tree
- Can validate form data
- Can access / modify browser cookies
- Can detect the user’s browser and OS
- Can be used as object-oriented language
- Can handle exceptions
- Can perform asynchronous server calls (AJAX)
JavaScript Engines
- Depends on Browser
- V8 in Chrome, Chakra in IE, Spidermonkey in Firefox, JavaScriptCore for Safari, etc.
- Services
- Memory Management / GC
- Just-in-Time Compilation
- Type System
- etc.
The First Script
<html>
<body>
<script type="text/javascript">
alert('Hello JavaScript!');
</script>
</body>
</html>
Using JavaScript Code
- The JavaScript code can be placed in:
- <script> tag in the head
- <script> tag in the body - not recommended
- External files, linked via <script> tag the head
- Files usually have .js extension
- Highly recommended
- The .js files get cached by the browser
<script src="scripts.js" type="text/javscript"></script>
JavaScript – When is Executed?
- JavaScript code is executed during the page loading or when the browser fires an event
- All statements are executed at page loading
- Some statements just define functions that can be called later
- No compile time checks
- Function calls or code can be attached as “event handlers” via tag attributes
- Executed when the event is fired by the browser
<img src="logo.gif" onclick="alert('clicked!')" />
- Executed when the event is fired by the browser
Calling a JavaScript Function from Event Handler – Example
<html>
<head>
<script type="text/javascript">
function test (message) {
alert(message);
}
</script>
</head>
<body>
<img src="logo.gif"
onclick="test('clicked!')" />
</body>
</html>
Using External Script Files
Using external script files:
<html>
<head>
<script src="sample.js" type="text/javascript">
</script>
</head>
<body>
<button onclick="sample()" value="Call JavaScript
function from sample.js" />
</body>
</html>
External JavaScript file:
function sample() {
alert('Hello from sample.js!')
}
JavaScript Syntax
- The JavaScript syntax is similar to C#
- Operators ( + , * , = , != , && , ++ , …)
- Variables (typeless)
- Conditional statements ( if , else )
- Loops ( for , while )
- Arrays ( my_array[] ) and associative arrays ( my_array[‘abc’] )
- Functions (can return value)
Standard Popup Boxes
- Alert box with text and [OK] button
- Just a message shown in a dialog box:
alert("Some text here");
- Just a message shown in a dialog box:
- Confirmation box
- Contains text, [OK] button and [Cancel] button:
confirm("Are you sure?");
- Contains text, [OK] button and [Cancel] button:
- Prompt box
- Contains text, input field with default value:
prompt ("enter amount", 10);
- Contains text, input field with default value:
Built-in Browser Objects
- The browser provides some read-only data via:
- window
- The top node of the DOM tree
- Represents the browser’s window
- document
- holds information the current loaded document
- screen
- Holds the user’s display properties
- browser
- Holds information about the browser
- window
The Math Object
The Math object provides some mathematical functions
for (i=1; i<=20; i++) {
var x = Math.random();
x = 10*x + 1;
x = Math.floor(x);
document.write(
"Random number (" +
i + ") in range " +
"1..10 --> " + x +
"<br/>");
}
The Date Object
The Date object provides date / calendar functions
var now = new Date();
var result = "It is now " + now;
document.getElementById("timeField")
.innerText = result;
...
<p id="timeField"></p>
Timers: setTimeout()
- Make something happen (once) after a fixed delay
- 5 seconds after this statement executes, this function is called
var timer = setTimeout(bang, 5000); - Cancels the timer
clearTimeout(timer);
- 5 seconds after this statement executes, this function is called
Timers: setInterval()
- Make something happen repeatedly at fixed intervals
- This function is called continuously per 1 second:
var timer = setInterval(clock, 1000); - Stop the timer:
clearInterval(timer);
- This function is called continuously per 1 second:
Timer – Example
<script type="text/javascript">
function timerFunc() {
var now = new Date();
var hour = now.getHours();
var min = now.getMinutes();
var sec = now.getSeconds();
document.getElementById("clock").value =
"" + hour + ":" + min + ":" + sec;
}
setInterval(timerFunc, 1000);
</script>
<input type="text" id="clock" />
Debugging JavaScript
- Modern browsers have JavaScript console where errors in scripts are reported
- Errors may differ across browsers
- Several tools to debug JavaScript
- Microsoft Script Editor
- Add-on for Internet Explorer
- Supports breakpoints, watches
- JavaScript statement debugger ; opens the script editor
- Microsoft Script Editor
Firebug
- Firebug – Firefox add-on for debugging JavaScript, CSS, HTML
- Supports breakpoints, watches, JavaScript console editor
- Very useful for CSS and HTML too
- You can edit all the document real-time: CSS, HTML, etc
- Shows how CSS rules apply to element
- Shows Ajax requests and responses
- Firebug is written mostly in JavaScript
Debugging Node.js
- JavaScript can also be debugged with Node.js:
- Open Terminal/CMD
- Run
$ npm install –g node-inspector - In CMD/Terminal, navigate to the folder of the file to debug
- Run in
$ node-debug FILE_TO_DEBUG - A browser opens with the code, and it can be debugged
JavaScript Console Object
- The console object exists only if there is a debugging tool that supports it
- Used to write log messages at runtime
- Methods of the console object:
- debug(message)
- info(message)
- log(message)
- warn(message)
- error(message)