100% found this document useful (1 vote)
5 views

JavaScript A Beginner s Guide Third Edition John Pollock pdf download

The document provides information about the book 'JavaScript: A Beginner's Guide, Third Edition' by John Pollock, including details on its content, author, and technical editor. It includes links to download the book and other recommended beginner's guides on various topics. The book covers fundamental JavaScript concepts and techniques for web development.

Uploaded by

ransonmakuei
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (1 vote)
5 views

JavaScript A Beginner s Guide Third Edition John Pollock pdf download

The document provides information about the book 'JavaScript: A Beginner's Guide, Third Edition' by John Pollock, including details on its content, author, and technical editor. It includes links to download the book and other recommended beginner's guides on various topics. The book covers fundamental JavaScript concepts and techniques for web development.

Uploaded by

ransonmakuei
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 55

JavaScript A Beginner s Guide Third Edition John

Pollock pdf download

https://ebookfinal.com/download/javascript-a-beginner-s-guide-
third-edition-john-pollock/

Explore and download more ebooks or textbooks


at ebookfinal.com
Here are some recommended products for you. Click the link to
download, or explore more at ebookfinal

A Beginner s Guide To BorderManager 3 x Third Edition


Revision 1 Anonymous

https://ebookfinal.com/download/a-beginner-s-guide-to-
bordermanager-3-x-third-edition-revision-1-anonymous/

Network Security A Beginner s Guide Second Edition


Beginner s Guide Eric Maiwald

https://ebookfinal.com/download/network-security-a-beginner-s-guide-
second-edition-beginner-s-guide-eric-maiwald/

Javascript Absolute Beginners Guide Third Edition Kirupa


Chinnathambi

https://ebookfinal.com/download/javascript-absolute-beginners-guide-
third-edition-kirupa-chinnathambi/

Learning Web Design A Beginner s Guide to HTML CSS


JavaScript and Web Graphics 4th Edition Jennifer Niederst
Robbins
https://ebookfinal.com/download/learning-web-design-a-beginner-s-
guide-to-html-css-javascript-and-web-graphics-4th-edition-jennifer-
niederst-robbins/
Blender Game Engine Beginner s Guide Beginner s Guide 1st
ed Edition Bacone

https://ebookfinal.com/download/blender-game-engine-beginner-s-guide-
beginner-s-guide-1st-ed-edition-bacone/

The Brain A Beginner s Guide Oneworld Beginner s Guides


1st Edition Ammar Al-Chalabi

https://ebookfinal.com/download/the-brain-a-beginner-s-guide-oneworld-
beginner-s-guides-1st-edition-ammar-al-chalabi/

Databases A Beginner s Guide 1st Edition Andy Oppel

https://ebookfinal.com/download/databases-a-beginner-s-guide-1st-
edition-andy-oppel/

Networking A Beginner s Guide Fifth Edition Bruce Hallberg

https://ebookfinal.com/download/networking-a-beginner-s-guide-fifth-
edition-bruce-hallberg/

HTML A Beginner s Guide 2nd Edition Wendy Willard

https://ebookfinal.com/download/html-a-beginner-s-guide-2nd-edition-
wendy-willard/
JavaScript A Beginner s Guide Third Edition John
Pollock Digital Instant Download
Author(s): John Pollock
ISBN(s): 9780071632959, 0071632956
Edition: 3
File Details: PDF, 6.29 MB
Year: 2009
Language: english
JavaScript
A Beginner’s Guide

Third Edition
About the Author
John Pollock is employed as a Web Administrator during
the day and works on Web sites and other projects during the
evening. He runs two Web sites devoted to Web development
and design—PageResource.com (www.pageresource.com)
is a development tutorial site, and JavaScript City (www
.javascriptcity.com) is a site that offers free JavaScript code
to Web developers. John holds a bachelor of arts in English
from Sam Houston State University and currently lives in New
Waverly, Texas with his wife Heather.

About the Technical Editor


Scott Duffy is an author and consultant based in Toronto,
Canada. He designs and develops Web sites for small and
medium-sized companies.
JavaScript
A Beginner’s Guide

Third Edition
John Pollock

New York Chicago San Francisco


Lisbon London Madrid Mexico City
Milan New Delhi San Juan
Seoul Singapore Sydney Toronto
Copyright © 2010 by The McGraw-Hill Companies. All rights reserved. Except as permitted under the United States Copyright Act
of 1976, no part of this publication may be reproduced or distributed in any form or by any means, or stored in a database or retrieval
system, without the prior written permission of the publisher.

ISBN: 978-0-07-163296-6
MHID: 0-07-163296-4

The material in this eBook also appears in the print version of this title: ISBN: 978-0-07-163295-9, MHID: 0-07-163295-6.

All trademarks are trademarks of their respective owners. Rather than put a trademark symbol after every occurrence of a trad marked
name, we use names in an editorial fashion only, and to the benefit of the trademark owner, with no intention of infring ment of the
trademark. Where such designations appear in this book, they have been printed with initial caps.

McGraw-Hill eBooks are available at special quantity discounts to use as premiums and sales promotions, or for use in corporate
training programs. To contact a representative please e-mail us at bulksales@mcgraw-hill.com.

Information has been obtained by McGraw-Hill from sources believed to be reliable. However, because of the possibility of human
or mechanical error by our sources, McGraw-Hill, or others, McGraw-Hill does not guarantee the accuracy, adequacy, or complete-
ness of any information and is not responsible for any errors or omissions or the results obtained from the use of such information.

TERMS OF USE

This is a copyrighted work and The McGraw-Hill Companies, Inc. (“McGraw-Hill”) and its licensors reserve all rights in and to the
work. Use of this work is subject to these terms. Except as permitted under the Copyright Act of 1976 and the right to store and
retrieve one copy of the work, you may not decompile, disassemble, reverse engineer, reproduce, modify, create derivative works
based upon, transmit, distribute, disseminate, sell, publish or sublicense the work or any part of it without McGraw-Hill’s prior
copsent. You may use the work for your own noncommercial and personal use; any other use of the work is strictly prohibited. Your
right to use the work may be terminated if you fail to comply with these terms.

THE WORK IS PROVIDED “AS IS.” McGRAW-HILL AND ITS LICENSORS MAKE NO GUARANTEES OR WARRANTIES
AS TO THE ACCURACY, ADEQUACY OR COMPLETENESS OF OR RESULTS TO BE OBTAINED FROM USING THE
WORK, INCLUDING ANY INFORMATION THAT CAN BE ACCESSED THROUGH THE WORK VIA HYPERLINK OR
OTHERWISE, AND EXPRESSLY DISCLAIM ANY WARRANTY, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMIT-
ED TO IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. McGraw-Hill and
its licensors do not warrant or guarantee that the functions contained in the work will meet your requirements or that its operation
will be uninterrupted or error free. Neither McGraw-Hill nor its licensors shall be liable to you or anyone else for any inaccuracy,
error or omission, regardless of cause, in the work or for any damages resulting therefrom. McGraw-Hill has no responsibility for
the content of any information accessed through the work. Under no circumstances shall McGraw-Hill and/or its licensors be liable
for any indirect, incidental, special, punitive, consequential or similar damages that result from the use of or inability to use the work,
even if any of them has been advised of the possibility of such damages. This limitation of liability shall apply to any claim or cause
whatsoever whether such claim or cause arises in contract, tort or otherwise.
To my wife Heather Pollock, Bruce and Joy Anderson, and
Dr. J. D. and Linda Andrews

In memory of James D. and Livian Anderson, John William and Edith Hopkins,
Burley T. and Aline Price, and “Doc” Flores
This page intentionally left blank
Contents at a Glance
1 Introduction to JavaScript ................................................ 1
2 Placing JavaScript in an HTML File ...................................... 15
3 Using Variables ........................................................... 33
4 Using Functions ........................................................... 59
5 JavaScript Operators ..................................................... 87
6 Conditional Statements and Loops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
7 Event Handlers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
8 Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
9 The Document Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
10 Window Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
11 JavaScript Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
12 Math, Number, and Date Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305

vii
viii JavaScript: A Beginner’s Guide

13 Handling Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341


14 JavaScript and Forms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375
15 JavaScript and Frames . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407
16 An Introduction to Advanced Techniques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435
A Answers to Self Tests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467

Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 479
Contents
ACKNOWLEDGMENTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xix
INTRODUCTION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxi

1 Introduction to JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
What You Need to Know . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Basic HTML and CSS Knowledge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Basic Text Editor and Web Browser Knowledge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Which Version? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Remember, It’s Not Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Similarities to Other Languages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Beginning with JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Object Based . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Client Side ................................................................... 8
Scripting Language . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Putting It All Together . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Online Resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Try This 1-1: Use JavaScript to Write Text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

ix
x JavaScript: A Beginner’s Guide

2 Placing JavaScript in an HTML File ..................................... 15


Using the HTML Script Tags ....................................................... 16
Identifying the Scripting Language . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Calling External Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Using <noscript></noscript> Tags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Creating Your First Script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Writing a “Hello World” Script ............................................... 19
Creating an HTML Document for the Script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Inserting the Script into the HTML Document . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Try This 2-1: Insert a Script into an HTML Document . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Using External JavaScript Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Creating a JavaScript File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Creating the HTML Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Viewing the Pages in Your Browser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Try This 2-2: Call an External Script from an HTML Document . . . . . . . . . . . . . . . . . . . . . 26
Using JavaScript Comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Inserting Comments on One Line . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Adding Multiple-Line Comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3 Using Variables ........................................................... 33
Understanding Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
Why Variables Are Useful . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Variables as Placeholders for Unknown Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Variables as Time-Savers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Variables as Code Clarifiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Defining Variables for Your Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Declaring Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Assigning Values to Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Naming Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Understanding Variable Types ...................................................... 40
Number ...................................................................... 40
String . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
Boolean . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
Null . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
Try This 3-1: Declare Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Using Variables in Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
Making a Call to a Variable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Adding Variables to Text Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Writing a Page of JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Creating the Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Defining the Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Adding the Commands ....................................................... 52
Modifying the Page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
Try This 3-2: Create an HTML Page with JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
Contents xi

4 Using Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
What a Function Is . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
Why Functions Are Useful . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
Structuring Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
Declaring Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
Defining the Code for Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
Naming Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
Adding Parameters to Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
Adding Return Statements to Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
Calling Functions in Your Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Script Tags: Head Section or Body Section . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
Calling a Function from Another Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
Calling Functions with Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
Calling Functions with Return Statements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
Other Ways to Define Functions .............................................. 76
Try This 4-1: Create an HTML Page with Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
Putting It All Together . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
Try This 4-2: Write Your Own Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
5 JavaScript Operators ..................................................... 87
Understanding the Operator Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
Understanding Mathematical Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
The Addition Operator (+) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
The Subtraction Operator (–) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
The Multiplication Operator (*) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
The Division Operator (/) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
The Modulus Operator (%) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
The Increment Operator (++) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
The Decrement Operator (– –) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
The Unary Negation Operator (–) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
Understanding Assignment Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
The Assignment Operator (=) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
The Add-and-Assign Operator (+=) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
The Subtract-and-Assign Operator (–=) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
The Multiply-and-Assign Operator (*=) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
The Divide-and-Assign Operator (/=) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
The Modulus-and-Assign Operator (%=) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
Try This 5-1: Adjust a Variable Value . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
Understanding Comparison Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
The Is-Equal-To Operator (==) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
The Is-Not-Equal-To Operator (!=) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
The Is-Greater-Than Operator (>) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
The Is-Less-Than Operator (<) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
xii JavaScript: A Beginner’s Guide

The Is-Greater-Than-or-Equal-To Operator (>=) .............................. 104


The Is-Less-Than-or-Equal-To Operator (<=) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
The Strict Is-Equal-To Operator (===) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
The Strict Is-Not-Equal-To Operator (!==) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
Understanding Logical Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
The AND Operator (&&) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
The OR Operator (||) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
The NOT Operator (!) ........................................................ 108
The Bitwise Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
Special Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
Understanding Order of Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
Try This 5-2: True or False? ........................................................ 111
6 Conditional Statements and Loops ....................................... 115
Defining Conditional Statements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
What Is a Conditional Statement? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
Why Conditional Statements Are Useful . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
Using Conditional Statements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
Using if/else Statement Blocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
Using the switch Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
Using the Conditional Operator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
Try This 6-1: Construct an if/else Block . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
Defining Loops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
What Is a Loop? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
Why Loops Are Useful . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
Using Loops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
do while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
for in . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
for each in . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
Using break and continue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
Try This 6-2: Work with for Loops and while Loops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
7 Event Handlers ........................................................... 147
What Is an Event Handler? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
Why Event Handlers Are Useful . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
Understanding Event Handler Locations and Uses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
Using an Event Handler in an HTML Element ................................ 149
Using an Event Handler in the Script Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
Try This 7-1: Create a Button . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
Learning the Event Handlers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
The Abort Event (onabort) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
The Blur Event (onblur) ...................................................... 155
Contents xiii

The Change Event (onchange) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156


The Click Event (onclick) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
The Focus Event (onfocus) ................................................... 158
The Keydown Event (onkeydown) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
The Keypress Event (onkeypress) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
The Keyup Event (onkeyup) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
The Load Event (onload) ..................................................... 160
The Mousedown Event (onmousedown) ...................................... 161
The Mousemove Event (onmousemove) ...................................... 161
The Mouseover Event (onmouseover) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
The Mouseout Event (onmouseout) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
The Mouseup Event (onmouseup) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
The Reset Event (onreset) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
The Submit Event (onsubmit) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
The Unload Event (onunload) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
Try This 7-2: Use Events to Send Out Alerts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
Creating Scripts Using Event Handlers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
The Text Box Message . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
The Button Link . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
Other Ways to Register Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
The addEventListener() Method .............................................. 172
The attachEvent() Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
8 Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
Defining Objects ................................................................... 176
What Is an Object? ........................................................... 176
Why Objects Are Useful . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
Creating Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
Naming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
Object Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
Adding Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
Object Manipulation Statements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
Try This 8-1: Create a Computer Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
Understanding Predefined JavaScript Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
The Navigator Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
The History Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
Try This 8-2: Practice with the Predefined Navigator Object . . . . . . . . . . . . . . . . . . . . . . . . . 201
9 The Document Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
Defining the Document Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
Using the Document Object Model ................................................. 206
Using the Properties of the Document Object ....................................... 207
The Color Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
The anchors Property (Array) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
xiv JavaScript: A Beginner’s Guide

The cookie Property . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210


The dir Property . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
The domain Property ......................................................... 212
The formname Property . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
The forms Property (Array) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
The images Property (Array) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
The lastModified Property . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
The layers Property (Array) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
The all Property .............................................................. 218
The links Property (Array) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
The referrer Property ......................................................... 219
The title Property . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
The URL Property . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
The URLUnencoded Property ................................................ 220
Using the Methods of the Document Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
The getElementById() Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
The getElementsByClassName() Method ..................................... 224
The getElementsByTagName() Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
The open() and close() Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
The write() Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
The writeln() Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
Creation Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
Try This 9-1: Add a DOM Node to the Document . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
Creating Dynamic Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234
Styles in JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234
Coding a Dynamic Script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
The innerHTML Property . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
Try This 9-2: Trying out Property Changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
10 Window Object ........................................................... 241
An Introduction to the Window Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
Using the Properties of the Window Object ......................................... 242
The closed Property .......................................................... 243
The defaultStatus Property . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
The frames Property (Array) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
The innerHeight and innerWidth Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
The length Property . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
The location Property . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
The name Property ........................................................... 246
The opener Property . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
The parent Property . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
The self Property . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
The status Property . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
The top Property . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
Contents xv

Try This 10-1: Use the location and innerWidth Properties .......................... 248
Using the Methods of the Window Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
The alert() Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
The confirm() Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
The find() Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
The home() Method .......................................................... 253
The print() Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
The prompt() Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
The open() Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
The close() Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
The moveBy() Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
The moveTo() Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
The resizeBy() Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
The resizeTo() Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
The scrollBy() Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
The scrollTo() Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
The setInterval() Method ..................................................... 265
The clearInterval() Method ................................................... 266
The setTimeout() Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
The clearTimeout() Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
Try This 10-2: Use the setTimeout() and confirm() Methods . . . . . . . . . . . . . . . . . . . . . . . . . 269
11 JavaScript Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
What Is an Array? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
Why Arrays Are Useful . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
Defining and Accessing Arrays ..................................................... 275
Naming an Array . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
Defining an Array ............................................................ 276
Accessing an Array’s Elements ............................................... 276
Other Ways to Define Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277
Understanding the Properties and Methods of the Array Object . . . . . . . . . . . . . . . . . . . . . . 279
Properties .................................................................... 279
Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282
Extended Array Methods ..................................................... 291
Using Arrays with Loops ........................................................... 292
Creating Array Elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292
Moving Through Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
Try This 11-1: Use Loops with Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
Using Associative Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298
Defining Associative Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
Accessing Associative Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
Try This 11-2: Use Associative Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301
xvi JavaScript: A Beginner’s Guide

12 Math, Number, and Date Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305


Using the Math Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306
What Is the Math Object? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306
How the Math Object Is Useful . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306
Properties .................................................................... 306
Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308
Try This 12-1: Display a Random Link on a Page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
Understanding the Number Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322
Properties .................................................................... 322
Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324
Using the Date Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326
Properties .................................................................... 326
Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327
Methods That Get Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329
Methods That Set Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332
Other Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
How About Some Date Scripts? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334
Try This 12-2: Create a JavaScript Clock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338
13 Handling Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341
Introduction to the String Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342
The String Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342
The String Literal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343
What’s the Difference? ....................................................... 343
Using the Properties of the String Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344
The constructor Property . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344
The length Property . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344
The prototype Property . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
Using the Methods of the String Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
Methods That Add HTML Tags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
The Other Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351
Try This 13-1: Use charAt() to Find a First Letter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359
Putting Methods Together . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360
Try This 13-2: Use indexOf() to Test an Address . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362
Using Regular Expressions ......................................................... 363
Creating Regular Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363
Testing Strings Against Regular Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364
Adding Flags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365
Creating Powerful Patterns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366
Grouping Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369
The replace(), match(), and search() Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370
More Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372
Contents xvii

14 JavaScript and Forms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375


Accessing Forms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376
Using the forms Array . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376
Using Form Names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380
Using an ID .................................................................. 381
Using the Properties and Methods of the Form Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382
Properties .................................................................... 382
Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392
Ensuring the Accessibility of Forms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392
Using Proper Element and Label Order ....................................... 393
Using <label></label> Tags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393
Using <fieldset></fieldset> Tags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393
Not Assuming Client-Side Scripting .......................................... 394
Validation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395
onsubmit and the return Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395
Techniques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396
Try This 14-1: Request a Number . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398
Using Forms for Navigation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399
Clicking a Button . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399
Try This 14-2: Build a Select Box Navigation Script ................................ 403
15 JavaScript and Frames ................................................... 407
An Introduction to Frames . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408
Purpose of Frames . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408
The Code Behind the Frames . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409
Frame Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411
Accessing Frames . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414
The frames Array . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414
Using a Frame Name . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417
Changing Frames . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418
Change a Single Frame . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418
Change Multiple Frames . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419
Try This 15-1: Change Frames . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422
Step by Step . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422
Frame Navigation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423
Using the Select Box with Frames ............................................ 423
Breaking Out of Frames ...................................................... 424
Sending Viewers to Frames . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426
Using Variables Across Frames . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428
Try This 15-2: Use Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432
xviii JavaScript: A Beginner’s Guide

16 An Introduction to Advanced Techniques ................................ 435


Debugging Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436
Types of Errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436
JavaScript and Accessibility ........................................................ 442
Separate Content from Presentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442
Enhancing Content ........................................................... 444
Try This 16-1: Make This Code Accessible . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445
Using Cookies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446
Setting a Cookie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446
Reading a Cookie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449
Try This 16-2: Remember a Name . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451
Working with Images . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452
Preloading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452
Rollovers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 454
JavaScript Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 460
Security and Signed Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 460
Page Protection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 460
AJAX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 462
JavaScript Libraries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463
A Answers to Self Tests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467
Chapter 1: Introduction to JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 468
Chapter 2: Placing JavaScript in an HTML File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 468
Chapter 3: Using Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469
Chapter 4: Using Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469
Chapter 5: JavaScript Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 470
Chapter 6: Conditional Statements and Loops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471
Chapter 7: Event Handlers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471
Chapter 8: Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 472
Chapter 9: The Document Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473
Chapter 10: Window Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473
Chapter 11: JavaScript Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 474
Chapter 12: Math, Number, and Date Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 475
Chapter 13: Handling Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 475
Chapter 14: JavaScript and Forms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476
Chapter 15: JavaScript and Frames . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 477
Chapter 16: An Introduction to Advanced Techniques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 477

Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 479
Acknowledgments
I would like to begin by thanking my wonderful wife, Heather Pollock, for all of her love,
support, and encouragement in all I do. I love you!
I would like to thank my parents, Bruce and Joy Anderson, for their love and guidance,
and for always supporting my endeavors.
I would like to thank Dr. J. D. and Linda Andrews for their love, guidance, and support.
In addition I would like to thank John and Betty Hopkins (grandparents), James D. and Livian
Anderson (grandparents), Clifton and Juanita Idom (grandparents), Richard Pollock (brother) and
family, Misty Castleman (sister) and family, Warren Anderson (brother) and family, Jon Andrews
(brother) and family, Lisa and Julian Owens (aunt/uncle) and family, and every aunt, uncle,
cousin, or other relation in my family. All of you have been a great influence in my life.
I would like to thank all of my editors at McGraw-Hill/Professional for their outstanding
help and support throughout the writing of this book. Thanks to Jane Brownlow, Joya Anthony,
Janet Walden, Smita Rajan, Bill McManus, Claire Splan, Jim Kussow, Jeff Weeks, and to all of
the copy editors who worked on each edition of the book.
Thanks to my technical editor, Scott Duffy, for editing and checking over all of the technical
aspects of the book, and helping me provide clear explanations of the topics that are covered.
I would like to thank my English professors at Sam Houston State University in Huntsville,
Texas for guiding me toward a better understanding of the English language. Thanks to James J.
Dent, Helena Halmari, Douglas Krienke, Julie Hall, Tracy Bilsing, Phillip Parotti, Ralph Pease,
Paul Ruffin, and Jack Kerr. In addition, I thank all of my other professors at the university for
helping me gain knowledge in so many areas.

xix
Discovering Diverse Content Through
Random Scribd Documents
terhelve. Ezek egész a czárnő budoárjáig nyitva tartottak előtte
minden ajtót.
Majd megfelelő czímet is szerzett neki ehhez új pártfogónője. A
czárnő kinevezte Frigyest udvari kammerjunkerének.
Ekkor aztán már aranykulcsa is volt minden ajtó felnyitásához. A
czárnő kammerjunkere! Egy ilyen méltóság előtt mélyebb
komplimentet vágnak az udvaronczok, mint egy miniszter előtt.
De ezen udvari hivatalon kívül még egy olyan foglalkozást is
kellett teremteni Frigyes számára, melyben nagy tanulmányai, fényes
tehetségei méltó munkatért találnak. Ez is megjött. A kanczellár
megtette Frigyest belső titkárának.
S ebben az állásában ez a huszonnégy éves ifju teljes betekintést
nyert az egész európai politika rejtélyes gépezetébe. A legtitkosabb
levelezéseket ő olvasta és fogalmazta. S lángesze, tanulmányai,
nyelvismerete komoly sikert biztosítottak a számára. Rövid időn
nélkülözhetlen emberévé lett a kanczellárnak. Óriási szorgalommal
dolgozta fel a rendezetlen ügyek halmazát: alig engedett magának
alvásra időt. S aztán, hogy annál szorgalmasabban végezhesse
teendőit, magában a kanczellári palotában rendeztek be a számára
kényelmes lakást, közel a kanczellárnő lakosztályához.
Okosabb is így, mint az ablakon át járni fel kötéllajtorján.
Ez új hivatalában is szivesen látott vendége volt mind az osztrák,
mind az angol nagykövetnek, a kik mindketten egyetértettek
Bestuseffel a porosz király elleni politikai cselszövésben.
Lord Hyndtforth ezentúl is hű oltalmazója volt kegyenczének. Ő
nála volt letéve Trenk Frigyesnek minden vagyona, mely (saját
életrajza szerint) a szép Jelvira halála után hétezer aranyból állt
készpénzben s rövid három hónapi hivataloskodás után, daczára a
pazarló életmódnak, – felszaporodott nyolczezer aranyra. – A mi azt
bizonyítja, hogy Oroszországban a miniszteri titkárokat nagyon jól
fizethették abban az időben.
Bevallja ugyan fiatal hősünk egész őszintén, hogy a
pártfogónéjától tetemes összegeket kapott; de hozzá teszi, hogy
ezeknek nagyrészét a méltóságteljes Anna tékozló fiának a hinárból
kiszabadítására fordította.
Ha ezt tette, akkor csak atyai kötelességet teljesített.
VII. FEJEZET.

HOGYAN SZÜLETIK A

HONGYŰLÖLET.

Hongyűlölet!
Chimæra! Paradoxon!
Olyan szó, mely semmi nép szótárában elő nem fordul.
És épen Oroszországban, a hol a honszeretet a törvénynyel, a
vallással egyértelmű, a maga barbár őserejében együtt uralkodik a
jogarral és a – kancsukával.
Hogy mi az a muszka hűség, azt Trenk Frigyes legjobban
megérthette épen a Bestuseff család történetéből, a mit a bizalmas
egyedüllét óráiban szép Anna suttogva mondott el neki.
A kanczellárnak volt egy bátyja: Bestuseff Riumin Ferencz.
Ennek a felesége, Lapukhin herczegnővel együtt valami sértő
mendemondát beszélt ki Erzsébet czárnő testi bájairól.
Ezért a czárnő mind a két herczegasszonyt száműzte élte fogytáig
Szibériába. De előbb mind a kettőt félmeztelenre vetkőztetve,
megkancsukázták a piaczon, a sokaság előtt. És azután kivágták a
nyelvüket.

É
… És ennek a megkorbácsolt, megcsonkított asszonynak a férje –
tovább is megmaradt a czárnő szolgálatában: Erzsébet őt bízta meg
a bécsi udvarnál a legfontosabb nagykövetség tisztével. Trenk
Frigyes sokszor láthatta Bestuseff Riumin Ferencz herczeget Bécsben
léte alatt.
Ilyen szörnyeteg a hűség az orosz nemzetnél.
… És most következik egy igen ostoba história, a mi csak arra
való, hogy az embert boszantsa.
Ez időben Poroszország nagykövete Moszkvában egy gróf Goltz
vala.
Az emelkedőben levő orosz birodalom barátságáért Európa
minden országa versenyzett. Egy czárnői kammerjunker tenyerét
valamennyi nagykövet sietett szorongatni.
Ezt Goltz úr is megpróbálta. De Trenk Frigyes három lépést
hátrált előtte s megköszönte a barátkozást.
Ezzel aztán még jobban magára haragította a patriótáját, mint
ama bizonyos danczkai bastonáddal, melyért Goltz hasztalan
sürgetett elégtételt a czári udvarnál. Ott azt felelték neki, hogy
megkapott botokat meg nem kapott botokká dekretálni még az
angol parlamentnek sincs hatalma.
S a számüzött Trenknek a befolyása egyre nőtt az orosz udvarnál.
Ennek a megtörésére Goltz úr egy nagyon alacsony, gyermekesen
buta cselszövényt gondolt ki.
Hyndtforth lord, a ki jól ismerte Trenk Frigyesnek, különösen
architechtonikai rajzolásban való ügyességét, felkérte őt egyszer,
hogy rajzolja le számára Kronstadtot, kikötőjével, mamelonjával és a
gályáival együtt. Ő maga adta át neki a kép alapjául szolgáló
tervrajzokat és a gályaképeket, a miket minden könyves boltban
meg lehetett venni két rubelért.
Trenk Frigyes aztán ezekből összeállított egy hangulatos rajzot,
mely Kronstadtot híven ábrázolta, a nélkül, hogy ő azt látta volna
természetben.
Ezt a képet Hyndtforth lord rámába téve akasztá ki a szobájában.
Egy napon a szász nagykövet, Funk úr meglátogatja az angol
követet, meglátja nála Frigyes rajzát, nagyon megtetszik neki, elkéri
tőle, hogy ő is lemásoltathassa azt magának. Hyndtforth odaadja
neki.
A míg Funk lakásán egy piktor Frigyes rajzát másolja, oda kerül
hozzá Goltz úr; meglátja a képet, nagyon feldicséri; akkor aztán
mind a két követ duettben elkezd lamentálni a fölött, hogy milyen
kár volt ilyen szép tehetséget, mint ez a Trenk Frigyes, elzülleszteni a
hazájából.
Végül arra kérte Goltz ur Funk urat, hogy engedje át neki azt a
rajzot egy pár napra. Neki is van ilyen képe, de hibás; hadd
igazíttassa ki ez után. Funk úr átadta a rajzot Goltz urnak.
És ekkor Goltz úr egyenesen szánkázott Bestuseffhez, a
zsebredugott képpel.
– Ön egy kigyót táplál a keblében, herczegem.
– Csak egyet? kérdé sardoni mosolylyal Bestuseff.
– Hát, a hogy veszszük. Meglehet, hogy kettőt. De a
legmérgesebb vipera ez a Trenk.
– Azt ne tessék bántani. Ő a czárnőnek kegyencze s a
feleségemnek házi barátja.
– Ő árulója a czárnőnek! S szeretője a kancellárnőnek.
– Nono, uram! Ez nagy szó! Ezt be kellene bizonyítani.
Erre a feltüzelt kanczellárnak el kezdett egy mesét mondani a
követ.
– Lássa ön, herczegem! Azt, hogy áruló Trenk Frigyes,
bebizonyítom kézzel foghatóan, szemmel láthatóan. Én, hogy ennek
a kalandornak, a ki saját királyát elárulta, fogára tapintsak,
felszólítám őt, hogy készítse el számomra a kronstadti kikötőnek és
erődítvényeknek nagy titokban tartott rajzait – kétszáz arany díjért. S
ez a pribék elfogadta a kinált bűndíjt. Itt van az elkészített munka.
S azzal oda tette a kanczellár elé Trenk Frigyes rajzát.
Bestuseff éktelen haragba jött ennek a képnek a láttára. Mit
tudta ő, hogy mi különbség van egy fortifikatzionális tervrajz, meg
egy panoráma között. Ez már flagrans delictum.
– Pert kap a gazember a nyakára s kancsukát a hátára. Kiabált
dühében.
Hanem erről lebeszélte Goltz úr. Nem kell az úrfit perbe fogni,
mert azt a czárnő pártfogolja: az bizonyosan megkegyelmezne neki
az ő szép szemeiért. Legjobb lesz őt szépen meglepni éjszaka az
ágyában s aztán senkinek sem szólva a csukott troikába beültetni s
szépen elutaztatni Szimbirszkbe, vagy hova. – Ezzel az alkalommal
exczellencziád legalább majd annak a másik vádamnak az
alaposságáról is meg fog győződni.
Ezzel ismét zsebébe dugta Goltz ur a képet és eltávozott.
De Bestuseff urnak, ördög pokol! nem volt kedve annak a másik
vádnak az alaposságáról is meggyőződni; hanem átrohant
egyenesen a felesége szobájába s haragja tűzokádó kedvében
szemére lobbantá a gyalázatot, a mit házára hozott, kalandot kezdve
egy ilyen sehonnai árulóval, mint ez a Trenk.
Anna hideg méltósággal kérdezé:
– Honnan veszi ön ezt a gyanut?
– Kezemben volt a bizonyítvány.
– Miféle bizonyítvány?
– A kronstadti erődítvénynek a rajza.
– Hát én vagyok a kronstadti erődítvény?
– Fájdalom, hogy ön nem a kronstadti erődítvény. De az áruló
csak az ön révén juthatott hozzá, hogy azt lemásolhassa.
– S miért tette volna azt?
– Mert Goltztól kétszáz aranyat kapott érte.
Ekkor aztán a kanczellárnőt is elhagyta a türelme. Ő tudta
legjobban, hogy Frigyesnek mennyi pénze van s azt milyen
becsületes úton keresi.
Nem replikázott a férjével tovább, hanem nyalábra kapta, mint
egy gyereket (kicsiny, vézna uracska volt) s kivitte az ölében, minden
rugkapálózása daczára átczipelte a hálószobájába, ott lefektette a
medvebőrre, aztán odakiáltott a komornyiknak: «hijjátok a kirurgust,
eret vágni az uramon, a guta kerülgeti».
Anna asszony megtehette azt, a hogy a német szóbeszéd
mondja: «Ihre Mittel erlaubten ihr Solches».
Aztán ott hagyta a kanczellárt dühöngeni a saját szobájában.
Maga azonban sietett rögtön levelet irni Frigyesnek.
«Magát nagy veszély fenyegeti. Ma ne háljon odahaza. Maradjon
lord Hyndtforth házában, közelebbi értesítésig.»
Ezzel a levéllel elküldte a magántitkárát a kanczellárnő az angol
nagykövet palotájába, jól tudva, hogy Frigyes annál szokott ebédelni.
Trenk közölte a mylorddal Bestuseffné rejtélyes izenetét.
A nagykövet azonnal odahajtatott a kanczellárhoz.
A mint annak a szobájába belépett, a kanczellár heves
szemrehányásokkal fogadta, hogy az ő házához egy árulót vezetett
be.
– Mit vétett Trenk? kérdezé a mylord.
– Lerajzolta Kronstadt erődítési tervét suttyomban, s eladta
kétszáz aranyért a porosz nagykövetnek.
– Az lehetetlen! szólt közbe Lord Hyndtforth. (Ő tudta, hogy
Frigyes gazdagon van ellátva: nála volt a pénze letéve.) Ki mondta
ezt?
– Goltz maga! Itt volt nálam. A rajzot is megmutatta. Alá van irva
a rajzoló neve.
– Alá van irva a neve? Akkor én már tudok róla valamit. Kérem,
hivassa ide Goltz urat azzal a rajzzal együtt. Ha ez csakugyan a titkos
tervrajz, akkor megvonok minden oltalmat az árulótól.
Bestuseff azonnal irt Goltznak, hogy látogassa meg, s hozza el a
tervrajzot is magával. A nagykövet azt izente vissza, hogy nem
mehet, fáj a lába.
Ez alatt lord Hyndtforth értesíté a házánál menedékben levő
Trenket, hogy «Csigavér! Nem Annáról van szó, csak Kronstadtról».
Erre aztán Frigyesnek is egyszerre megtért az ártatlansága felőli
meggyőződése: – azonnal elhagyta a menedékét s felsietett a
kanczellárhoz.
Lord Hyndtforthot még ott találta a kanczellár szobájában.
A nagykövet, igazi britt büszkeséggel kiálta a belépőre:
– Maradjon ott, a hol áll! Ne közelítsen ön felém addig, a míg a
vád alól nem tisztázza magát. – Ön lerajzolta alattomban Kronstadt
erődítményi tervét? S azt eladta Goltz úrnak?
– Én rajzoltam egy képet Kronstadtról, a mire excellentiád
szólított fel, a könyvárusoknál kapható vázlatok után, s azt
excellenciádnak adtam, – nem díjért, de hálás tiszteletből.
– S hogy került volna ez Goltz úr kezébe? kérdezé a kanczellár.
Lord Hyndtforth intett Frigyesnek, hogy hallgasson, s a kanczellár
fülébe súgott. Erre Bestuseff azt mondta Trenknek, hogy lépjen a
mellékszobába, s várjon, míg szólítani fogják. A kulcsot ráfordították
az ajtóra.
Az alatt, a míg Frigyes szobafogságban volt, lord Hyndtforth
elmondta Bestuseffnek az egész kronstadti rajz történetét: a
kanczellár odahivatta magához Funk urat, a szász követet s Schwert
urat, Belgium képviselőjét, azokkal együtt bocsátá el lord
Hyndtforthot Goltz urtól felvilágosítást kérni.
Legelőször is Funk úr visszakérte Goltz úrtól a kikölcsönzött
rajzot. Mikor az annak a zsebében volt, akkor lord Hyndtforth azt
mondta Goltznak, hogy már most mutassa meg nekik azt a
tervrajzot, a melyet Trenktől vásárolt kétszáz aranyon.
A nagykövet ötölt-hatolt, utoljára kipattantotta:
– Én nekem parancsom van a királyomtól megakadályozni, hogy
ez a Trenk Oroszországban szerencséjét kovácsolhassa. Én azt
tettem, a mi egy miniszternek a kötelessége.
– Tessék ezt lediktálni a titkár úrnak.
A három nagykövet a kanczellár első titkárát is magával hozta. Az
leirta azonnal Goltz úr nyilatkozatát.
– Egyébiránt a másik vádamat: a Kremlin kertjében, a
gyertyánfák alatti találkozást a magas rangú hölgygyel, fentartom.
A titkár ezt is hiven leirta.
– Tessék aláirni, mondá lord Hyndtforth.
Goltz úr odairta a nevét.
– Kérek hivatalos pecsétet is ütni a név alá.
(Az ostya nem akart jól megragadni a levélen.)
– Majd én ráköpök s akkor megragad, mondá lord Hyndtforth, s
úgy cselekedék.
Ezzel a bizonyítékkal aztán visszatértek a kanczellár palotájába.
Trenk Frigyes ártatlansága teljesen ki volt derítve: Bestuseff
ráismert az elhozott képben ugyanarra, a mit Goltz úr titokban
megmutatott neki. Restelte nagyon a dolgot, hogy nem tudott
külömbséget tenni egy tájkép, meg egy tervrajz között. Trenk
Frigyest kibocsátották a szobafogságából, meggratulálták,
megölelgették. Bestuseff is megölelte, hanem azután mégis ütött
egyet az öklével a hátára.
– Hanem az a találkozás a gyertyánfák alatt! Azért még majd
beszélünk egy szót, úrfi!
Trenk Frigyesnek aztán lovagi szavát vették, hogy nem fog Goltz
úrral gorombáskodni, ha találkozik vele.
Bestuseff ott marasztá az urakat lakomán. A kanczellárnő is
megjelent az asztalnál s változatlan hideg arczczal hallgatá végig a
mylord és a két követ úr előadását a Goltz úr intrikájáról. Úgy tett,
mintha ez csupa új dolog volna előtte. – Bizony pedig, ha ő bele nem
kap a sors lovainak gyeplőjébe, azok már azóta repítik Frigyes úrfit
az Urál felé!
Csak Bestuseff dörmögött közbe egyet-mást.
– No de a gyertyánfák alatt…
Még tartott a lakoma, a midőn belépett a terembe a czárnő
udvarmestere s egy levelet adott át a kanczellárnak, melyet a czárnő
sajátkezűleg irt.
A vendégek felállva hallgatták végig a levél tartalmát. A
kanczellárhoz volt az intézve. A legszeretetreméltóbb uralkodónő
mély felindulásának adott kifejezést azon méltatlan vádaskodás
fölött, melylyel kedves híve, Trenk Frigyes nevén sebet ütni
törekedtek. Ezen igaztalanul okozott fájdalom megorvoslására
elrendeli a czárnő, hogy Trenk Frigyesnek az államkincstárból két
ezer rubel kifizettessék s jövőre nézve e hű ifju személye minden
kémkedés és ólálkodás alul mentesíttessék.
«Éljen a czárnő!» hangzott minden ajkról.
Trenk Frigyesnek odanyujtatott a levél, hogy azon az uralkodónő
nevét megcsókolhassa.
A kanczellárnak egyszerre visszatért az egész jó kedve.
Megveregette Frigyes vállát.
– Jól van, fiacskám. Csak te sétálj a Kremlin gyertyánfái alatt.
Egy szót se beszéljünk erről többet.
… S mind ezt istennői apathiával hallgatta végig a szép Anna
asszony.
Ez a rosszul sikerült cselszövény szinleg mulatságosan végződött,
de az érdekelt kedélyekben mélyen ülő salakot hagyott hátra.
Trenk Frigyes naplójából annyit tudunk meg, hogy a szép Anna
asszony ezért a lovagiatlan árulkodásért olyan inzultussal állt boszút
Goltz úron, a mely le nem irható; és hogy ez a nagykövet ez eset
után sorvasztó betegségbe esett s rövid időn elhalt. Halála rejtélyét
homály takarja.
De magának Trenknek a lelkületét is feldúlta ez a durva
cselvetés.
Hogy Frigyes király őt, egykori kedvenczét, még idegen
országban is üldözteti s ilyen eszközöket is megenged a
nagyköveteinek, hogy haragja kipéczézett tárgyát szerencsétlenné
tegyék.
Saját szavai szerint: «e cselvetésen felindulva, képes lett volna
saját hazáját pusztasággá átváltoztatni, ha alkalom kinálkozott volna
rá».
Tehát már kész volt kardját kihúzni Poroszország zászlói ellen.
Megszületett a hongyűlölet.
S ezt a szörnyszülöttet még nagyobbra nevelte mindennapi
indulataival.
A féltékenység fulánkja a kanczellárnak is a szivébe szakadt. Ez
időtől fogva nemcsak a saját szemével, de kémei által is folyton
figyelemben tartá a felesége és Trenk Frigyes minden lépését.
Azoknak alig lehetett másutt ellenőrizetlenül találkozni, mint a
Kremlinben, aztán meg lord Hyndtforth palotájában; vagy néha
Bernesnél, az osztrák nagykövetnél. Ide nem hatolhattak be a
kanczellár kémei.
S ez a féltés, ez a boszúság magára az orosz politikára is
befolyással volt. Bestuseff megharagudott lord Hyndtforthra és
Bernes úrra a miatt, hogy Anna asszonynak Frigyessel folytatott
szerelmi viszonyát pártolják. Azoknak ugyan legkevesebb kedvük telt
abban, hogy két szerető szívnek a boldogságát előmozdítsák, de
nagy politikai tervük volt vele, hogy Erzsébet czárnőt megnyerjék az
angol és osztrák fegyverszövetség számára, s egy közös hadjáratra
Poroszország ellen. S ennek legbiztosabb eszközlője volt a
kanczellárnő, a kinek Poroszország iránti gyűlöletét legjobban
fentartá a Frigyes király által méltatlanul üldözött ifju iránti
szenvedélye.
Ez a huszonnégy éves gyermek képezte az európai politika
sarkát, mely körül az összes diplomatia forogni volt kénytelen.
A czárnő is kényeztette a fiut és semmi titkot nem tartott előtte.
Ez öntudatlan politikai sark körül aztán maga az orosz diplomatia
is megfordult.
Bestuseff kanczellár, féltékenysége hideg dühében, eddigi
szövetségeseitől, angoloktól és osztrákoktól elfordulva, a
poroszokhoz közeledett. Anna asszony, kinek szintén meg volt a
maga titkos rendőrsége, férjének minden titkos terveiről értesült. A
hadügyminiszter, Apraxin, maga is bele volt ezekbe avatva.
A titkos terv az volt, hogy Oroszország csatlakozzék az angol,
osztrák és később a franczia szövetséghez s indítson meg egy nagy
hadsereget Apraxin vezénylete alatt a poroszok ellen. A legelső
összetalálkozásnál azonban, melyben a poroszokkal csetepatéra
kerül a sor, tegyen úgy Apraxin, mintha elvesztett volna egy derék
ütközetet s vonuljon vissza, hagyja magára az osztrákot, a ki az
oroszok félreálltával az angolokkal nem érintkezhetik, sem a
francziákkal.
Ezt az egész komplottot előre megtudta Anna asszony s közölte
Frigyessel, úgy, hogy ez a gyermek már előre tudta, hogy mi lesz a
legközelebbi nagy háborúnak a kimenetele?
Trenk Frigyes veszélyes lejtőre jutott. Eszközül hagyta magát
felhasználni egy nagy, az egész Európát megmozdító diplomatiai
cselszövényhez, a melyben neki az a szomorú szerep jutott, hogy
saját hazájának ellensége legyen. S ha még abban tört volna ki
corioláni hongyűlölete, hogy kardját ajánlja fel hazája ellenségének,
ebben még lett volna valami brutális lovagiasság: a hőstett elfelejteti
az indokait. De ő rá egyenesen Ephialtes szerepe várt: az ellenséges
légióknak honfitársai ellen kalauzolása. Ő segített szítani a gyűlöletet
Erzsébet czárnő lelkületében a poroszok iránt. A trónörökös, később
III. Péter czár, határozott ellenzője volt annak a politikának, mely
Oroszországot a burkusok elleni harczra izgatta. Ezt tudta Bestuseff
és Apraxin is. De a czárnő nem kérte a trónörökös tanácsát, egészen
a kanczellárnő befolyása alatt állt, a ki viszont engesztelhetlen
boszút forralt Frigyes király ellen a Goltz által rajta elkövetett
meggyalázásért.
Tehát a kanczellár és a felesége két egymás ellen irányult
politikai cselszövényen dolgoztak.
Nagyon tragikus vége lett ennek a magas komédiának.
Öt évvel később csakugyan megindult a nagy hadjárat Frigyes
király ellen, melyben az oroszokon kívül az osztrákok és francziák is
résztvettek. – Apraxin tábornok egy hatalmas hadsereggel indult
meg Poroszország felé s Frigyes király fölött Grosz-Jägerndorf mellett
nagy diadalt vívott ki. – Ugyanekkor azonban Erzsébet czárnő halálos
betegségbe esett. – Bestuseff egy merész elhatározással hirtelen
parancsot küldött Apraxin után, hogy ne nyomuljon előre: térjen
vissza az egész orosz hadsereggel Muszkaországba. Azt remélte,
hogy ez által megnyeri a következő czár gratiáját, a ki a porosz
királyt pártolta. – Azonban mire Apraxin visszatért az orosz
hadsereggel, akkorra Erzsébet czárnő is felgyógyult a halálos
betegségéből s ismét átvette az uralkodást.
Mikor a czárnő megtudta, hogy az ő kegyenczei, uralkodónőjük
halálára számítva, ily végzetes fordulatot idéztek elő a hadjáratban,
méltó haragjában haditörvényszék elé állíttatá mind a kettőt s a
birák halálra itélték őket. – Erzsébet kegyelem útján száműzetésre
változtatta e büntetést. Anna asszony követte a száműzetésbe férjét,
a hol Bestuseff Alexej Petrovics, rangjától, érdemjeleitől megfosztva,
a bibliából kiszemelt kegyes mondatok összeállításával foglalkozott,
míg bátyja, Bestuseff Riumin Ferencz, patikárusságra adta magát. (Ő
lett feltalálója a hirhedt Bestuseff-cseppeknek, másnéven «arany
cseppek», melyek minden migrainet meggyógyítottak). – Ha Trenk
Frigyest, ki együtt emelkedett e hatalmasokkal, ott találta volna a
nagy kataklizma, belőle is olyan hulló csillag lett volna, mint azokból.
– Elvesztette volna azt, a mi visszanyerhetetlen: a becsületet.
Jó szerencséje volt, hogy korábban utólérte a szerencsétlenség.
VIII. FEJEZET.

KERESZTÜL-KASUL A VILÁGBAN.

A míg az ifjabb Trenk az orosz udvar diplomatiai és szerelmi


cselszövényeiben élénk szerepet játszott, az alatt az öregebb Trenk,
a spielbergi börtönben véget vetett nyughatatlan életének. A
meghalása is egy rettenetes komédia volt: dæmoni gonoszkodással
úgy kitervezve, hogy annak még folytatása is maradjon, hogy az ő
lelke még azután is a sírkövén gubbaszkodva, nevethessen az utána
következők kínlódásain.
Elébb szabályszerű testamentumot tett, melyben (a királynő
beleegyezésével) minden világi birtokára nézve az ő kedves
unokaöcscsét nevezé meg általános örököséül. (A kit nem sikerült
orgyilkosokkal megöletnie.)
Mikor készen volt a végrendelete, nevetve mondá a
börtönfelügyelő tisztnek, Kottulinszkynak:
– No most már vígan halok meg, mert úgy elláttam az öcsémet,
hogy még holtom után is boszanthatom és mortifikálhatom.
Akkor aztán konvertált, barátcsuhát öltött; – a ki teljes életében
atheista volt, templomokat rabolt ki, papokat kínzott: – egyszerre
kegyes lett; megjövendölte a halála napját, óráját, gyóntatót
hivatott; egy nap azt mérgezte meg aqua toffanával, másnap magát.
Hogy még egy nevetni valója legyen a lelkének onnan a sirkő
tetejéről: hogy zarándokol hozzá majd a nép, mint csodatevő
szenthez.
Trenk Ferencz tehát megirta a pokoli komédiáját, csak az volt
hátra, hogy a hős eljátszsza azt, a kinek a számára a czímszerep irva
volt.
A bécsi udvari kanczellária felküldé Moszkvába Trenk
végrendeletét a felhivással együtt, hogy a legatárius foglalja el az
örökbe hagyott birtokot.
Azt jól tudta Trenk Frigyes, hogy minden ország törvénye
megkivánja, miszerint földbirtokot csak honosult nevezhet
tulajdonának; a ki magyarországi földesúr akar lenni, annak magyar
nemessé is kell lennie. Következőleg ott kell hagynia a fényesnek
indult orosz életpályát, a magas politikában elfoglalt izgalmas
részesülést, a hatalmas pártfogókat s még hatalmasabb
pártfogónőket, az élvezetteljes kalandokat. Felcserélni Moszkvát
Bécscsel. És Bécset ismerte már annyira, hogy ne találjon benne
semmi szeretni valót. Nagybátyjának a sorsa elég ijesztő példa
lehetett előtte. Tudhatta, hogy mennyi átok fekszik a nagybátyja
örökül hagyott birtokán! Bár azt még nem tudta, hogy mennyi
processus jár vele?
Eleinte visszautasítá az egész örökséget. Azonban lord Hyndtforth
és Bernes úr addig unszolták, míg ráadta a fejét, hogy elfogadja azt.
Egy milliós örökség! Tömérdek kincs! Kész pénz halommal!
Három nagy uradalom, várkastély Magyarországon.
Lord Hyndtforth azzal győzött, hogy a szabadságvágyat éleszté
fel Frigyesben. Magyarország az ős szabadság hazája, olyan mint
Anglia, a hol a magyar nemest védi a primæ nonus. A magyar
nemes kis király a maga kastélyában! Míg ellenben a nagy orosz
birodalomban a legmagasabb államférfi, a leggazdagabb knéz sincs
megóva attól, hogy egy cselszövény, egy czárnői szeszély a
vesztőhelyre, a pellengérre ne küldje: a kancsuka alá, aztán
Szibériába. Ime, ő rá is ki volt már mondva – nem itéletképen – csak
egy féltékeny férj haragjából, hogy oda vándoroljon, s csak egy
asszonyi hajszálon akadt fenn a balsorsa.
Ez döntött. Frigyes elfogadta a magyar udvari kanczellária
ediktumát s folyamodott a czárnőhöz elbocsátásáért.
A czárnő is nehezen akarta elbocsátani, de hát még a másik
uralkodónője! Ölelő karok lekötötték, forró csókok forrasztották,
mégis el tudta magát szakítani. Megigérte, hogy visszajön. A szép
Anna egy gyémántokkal kirakott medaillont ajándékozott neki,
miniatür arczképével, meg egy drágaköves szelenczét. Tubákolni
divat volt hölgyeknél és ifju uraknál.
És mikor elutazott, Szentpétervárott egy bankár kereste fel, a ki
egy levelet adott át neki, melyet a kanczellárnő irt búcsúképen
hozzá. A levélhez egy váltó volt mellékelve négyezer rubelről. Ezt
küldé a távozó kedvencznek uti költségül. A levelet megcsókolá s
keblébe rejté Frigyes, a négyezer rubelt köszönettel visszaküldé.
Volt neki elég pénze, szép asszonyok, magas úrhölgyek
adománya.
Négy inast hordott magával: a két lovászát, Jankót és Brankót,
aztán meg egy muszka vadászt és egy kalmuk kocsist. Ezekre ugyan
mind nem volt szüksége, mert hajón utazott tovább.
Elébb Stockholmba ment, a hol a királyné igen szivesen fogadta.
Frigyes király legifjabb nővére volt. Jól ismerte Trenket. Ő volt a
lakodalmánál a királyi menyasszony kisérője a nemes, tiszteletbeli
csapat élén. Bizonyosan Amália herczegnő révén is jól ismerte az
ifjut.
Arra mutat az a figyelmeztetése, hogy ne sokat időzzön
Stockholmban, mert ez kellemetlen súrlódásra találna okot adni a
berlini udvarral.
Innen átutazott Koppenhágába: ott is talált egy régi jó pajtást, a
kit nyomoruságából kisegítsen. Aztán tovább Hollandba, egy
gabonaszállító hajóval.
Útközben elővette őket a vihar, a hajó elvesztette az órradzóját
meg az előtörzsfáját s jó szerencse volt, hogy a gotenburgi sziklák
előtt horgonyt vethetett.
A vihar kilencz napig ott tartá fogva a hajót.
Frigyes ez alatt azzal mulatta magát, hogy beleülteté a négy
inasát a hajó dereglyéjébe s elkalandozott a sziklák közé, tengeri
rákot, tőkehalat fogni hálóval, szigonynyal, vadludakat lövöldözni,
azokat hazahordta a hajóra s megosztotta a matrózokkal.
Azokon a sziklaszigeteken emberek laktak: a férfiak halászattal,
az asszonyok földmíveléssel foglalkoztak. Ebben az évben rossz
termésük volt. A szigetlakók éhinséggel küzdtek.
Trenk Frigyes aztán a hajótulajdonostól felvásárolt valami száz
zsák rozsot s azt a dereglyével kihordá a sziklákhoz s szétosztotta a
szigetlakók között. Ez is a nagyúri szenvedélyek közé tartozik.
Egy nagyobb sziklaszigeten még templom is volt. A pap is olyan
inséget szenvedett, mint a népe. Azt is megajándékozta Frigyes egy
pár száz forinttal, a mennyit az soha sem látott életében egy
rakáson.
Hangzott is utána a megvigasztalt nyomorultak áldó
zengedezése.
Úgy látszik azonban, hogy a vihar nem vesz tudomást az ilyen
hálanyilatkozatokról, mert a hajóhoz visszatérőben olyan rohammal
támadt a dereglyére, hogy azt felfordítá.
Trenk Frigyes csak a Jankó inasának köszönheté, hogy oda nem
veszett a hullámokban. Ez kezénél fogva húzta őt ki egy sziklára.
Hanem az orosz vadász, meg a kalmuk kocsis a tengerbe
fulladtak. Azok nem tudtak úszni.
Frigyes is beteg lett s néhány napig sem élő, sem halott nem
volt. Míg végre tizenötöd napra szerencsésen megérkezett a hajó
Amsterdam alá. – Hát bizony akkor tökéletes élvezet volt a tengeren
való utazás.
Hogy miért tette ezt a nagy körútat Trenk Frigyes Stockholmon,
Koppenhágán, Amszterdámon keresztül Bécsig? annak a megoldását
csak az ifjukori kalandvágyban és hetykélkedésben tudjuk feltalálni.
Útközben elpocsékolt tengersok pénzt, ivott tengervizet, kapott
tengeri betegséget, de semmi okosat nem tanult.
Egy pár fölösleges kalandja is volt: egy hires verekedő
czethalásznak levágta a jobb kezét s egy homályos gentleman által,
kit nagylelkűen megtraktált, meg hagyta magát lopni keservesen.
Jobb lett volna, ha a czethalászt traktálta volna meg s az
iparlovagnak vágta volna le a kezét.
Végre, nagy Odyssea után, körülkerülve fél Európát, eljutott
Bécsbe.
Legelső dolga volt audientiát kérni a királynőnél. Mária Terézia
igen kegyesen fogadta s tudatá vele, hogy legmagasabb
beleegyezését adja hozzá, miszerint Trenk Frigyes nagybátyja
örökségét elfoglalja, melynek rendezésére egy delegatum judicium
van kiküldve.
Frigyes azt hitte, hogy Bécsben is úgy lesz, mint Moszkovában.
Csak meg kell neki magát mutatni s azzal minden ember meghódol
előtte. Annyival inkább, mert itt már mint egy valóságos magyar
mágnás, három uradalom, meg egy híres kincstár örököse léphet fel.
De nagyon lehorgasztá a kevélységét a Trenk-féle törvényszéki
bizottság elnöke, a ki megismerteté vele a helyzetet. Legelőször is a
megdicsőült végrendelkező nyolczvanezer forintot meghaladó
legatumokat hagyott mindenféle kegyes czélokra, melyek a
kincstárán erős apadást okoznak; azután pedig nem kevesebb, mint
hatvanhárom processus van a hagyaték ellen megindítva, melyeknek
eldültéig az örökség ki nem adatik, s ha a felperesek igényei
érvényesülnek, az egész kincstár fenékig kiürül.
Ez volt az a mulatság, a mely fölött Trenk Ferencz még halála
előtt egy órával is olyan jókat tudott nevetni. Micsoda képet fog
csinálni öcsém uram, mikor megtudja, hogy hatvanhárom perben
kell helyt állania s mint az üldözött medvének, egy egész kopófalka
ellen védelmeznie magát.
Egy millió forint örökség – hatvanhárom prókátorral!
A legelső gondolatja az volt, hogy odadobja az egész örökséget a
törvényszék lábához s fut Európából s Keletindiáig meg sem áll! – S
ez volt az egészséges gondolat! Bár maradt volna mellette. Ott még
alkirály lehetett volna.
De szerencsétlenségére épen akkor érkezett meg Bécsbe az ő
moszkvai jó barátja, Bernes úr nagykövet, a kinek valami elintézni
való ügyei voltak Milanóban. Az ismét felbiztatta, hogy csak fogadja
el a Ferencz bátyja végrendeletét úgy, a hogy van, egyelőre; majd ő
beszél a királynővel s megszabadítja Frigyest e kellemetlen
helyzetből. Fel is ment az udvarhoz s a legjobb igéretekkel tért
vissza. Ezeken aztán Frigyes megnyugodott. Bernes úr megigérte
neki, hogy a mint Milanóból visszajön Bécsbe, egyenesen hozzáfog a
Trenk-massa felszabadításához, s addig vissza nem tér Moszkvába, a
míg ifju barátját a pakráci, petrováci és pleternitzi uradalmakba be
nem iktatja.
Ekkor aztán Frigyes mégis csak elő kérte hát a Ferencz
testamentumát, a mit még mind addig nem látott.
Itt következtek azután még az új meglepetések.
Trenk Ferencz hagyományozása három föltételhez volt kötve.
Az első, hogy az általános örökös térjen át a római katholikus
hitre. (A Trenkek lutheránusok voltak.)
A második, hogy egyedül az osztrák uralkodóháznak szolgáljon.
A harmadik, hogy az egész vagyona elidegeníthetlen
hitbizománynyá alakíttassék.
Ezek a föltételek még a hatvanhárom processusnál is
sulyosabban nehezültek a milliós örökségre.

É
És Frigyesnek még egyszer nyitott útat jó sorsának nemtője
ebből a labyrinthból való megmenekülésre.
Alig utazott el Bernes úr Bécsből, a midőn a pfalzi követnek az
estélyén összetalálkozott Frigyes a porosz nagykövettel, a ki őt
előzékeny nyájassággal félrehívta egy ablakfülkébe s elkezdett előtte
nyilatkozni Frigyes király megváltozott indulatáról Trenk iránt. A
nagykövet minden rábeszélő tehetségét elővette, hogy Frigyest
hazájába visszatérésre birja. Biztosítá számára a király amnesztiáját,
lelkére köté a hazája iránti szeretetét. – Frigyes hajthatatlan maradt.
Azután a nagyravágyásához beszélt. Frigyes király ki fogja őt
nevezni egy lovas ezrede parancsnokának; fényes katonai pálya
nyilik meg előtte a saját hazájában; míg itt az új hazában ugyan
várhat, a míg egy fölösleges helyen megakad, ott azután fenn is
akad. Láthatja a bátyja példájából, hogy mi a jutalma Ausztriában a
csatatéren szerzett érdemeknek. – Frigyest ez sem indította meg.
Végre a legérzékenyebb részén támadta meg. Beszélt neki a
szerelméről. Az egyetlen fenkölt szerelméről. A védő angyaláról, a ki
őt még most is imáiba foglalja. – Még az sem győzte le!
Az az átkozott millió bezárva tartá a lelkét.
Frigyes visszautasította a nagykövet ajánlatát, a király kegyelmét
s ez által nyiltan a hazája ellenségének vallotta be magát.
Ez volt a legnagyobb hibája és a legnagyobb bűne. Ezen tört meg
a sorsa derékban.
Maga is elismerte azt később s vénségében nehéz önvádakat
halmozott magára, hogy akkor ezt a sorsfordulatot nem fogadta el s
egész ifjuságát, életerejét semmivé tette általa.
Egy millió miatt!
De annak a milliós örökségnek a végrehajtói követelték a
végrendelet föltételének végrehajtását. Legelőször is a római
katholikus hitre áttérést.
Furcsa ellenmondások jönnek elő Trenk Frigyesnek a jellemében.
Ettől az egytől vonakodott.
Ő, a ki annak az egy milliónak a csábképeért meg tudta tagadni a
hazaszeretetét, el tudta mellőzni a nagyravágyását, le tudott
mondani a szerelméről; – nem tudta megváltoztatni az eklézsiáját.
Háromnegyedrészben gyönge tudott lenni, egynegyed részben erős.
De, hogy mégis, e miatt, el ne veszítse azt a kisértetes milliót,
megtette azt a tréfát, hogy egy kapuczinust megvesztegetett, hogy
adjon neki bizonyítványt, miszerint ő áttért a katholikus egyház
kebelébe. S ezzel elég volt téve a formaságnak. De az ilyen csalfaság
nem maradhatott titok. Ezért aztán mindenki meggyűlölte és
üldözőbe vette. A hypokrisist, a hitvallással űzött komédiát mind az
egyik, mind a másik fél egyformán elitéli. – Ezzel Trenk Frigyes
Szibériát csinált maga körül az emberi szivekben.
S Trenk Ferencz gúnyszelleme ott repkedett körülötte az útain.
Hát nem ez a manó vitte utána Bernes úrnak az aqua toffanát,
mely azt olaszországi útjában megölte? A kedves atyafiak ezt a
módját találták ki a barátságos kiegyezésnek: megmérgezték.
Bernes hirtelen halála egyszerre megfosztotta Trenk Frigyest
egyetlen igaz barátjától, a ki az udvarnál befolyással birt.
Maradt helyette hatvanhárom ellensége, ugyanannyi peres fél, a
ki az örökségét megtámadta, azoknak az ármányos prókátoraik, a
megvesztegetett birák, a sikkasztó sáfárok, csalafinta iparlovagok, a
kikhez még megszerezte ellenségekül a hitbuzgó papokat, a dölyfös
udvaronczokat és a gyanakodó diplomatákat.
Valóban egy mesehős bátorsága s egy gyermek könnyelműsége
kellett hozzá, hogy Trenk Frigyes ebbe a szörnyetegek barlangjába
belelépjen.
Itt azután lassankint kinevelte magát azzá a gyűlöletes és
nevetséges alakká, a mi egy bécsi perkeresőé, a ki egyik ajtótól a
másikhoz szalad, törvényszékekhez, dikastériumokhoz,
kanczelláriákhoz. Kopogtat, dörömböz, könyörög, káromkodik,
janitorokat megveszteget és a hová be nem juthat, a kapun les rá a
kegyelmes úrra, ott fogja el, úton-útfélen panaszolja úrnak-
bolondnak a szenvedett méltatlanságait, præsentál, allegál, replikál,
appellál, concertál, törvényeket czitál, szidja a papokat, az
udvaronczokat, a rendőrség kezébe kerül, becsukják, kiszabadul,
satisfactiót követel, azt nem kap, fűhöz-fához folyamodik: fut előle
minden ember s ajtót-ablakot zár, ha meglátja.
És ez alatt külső viseletében is elhanyagolja magát, katonai
egyenruhája nincs már, a legolcsóbb polgári öltözetet viseli, nehogy
a Kleiderordnung törvényeivel összeütközésbe jőjjön.
Ilyen alakban aztán a nőknél sincsen szerencséje. Nem is ér rá
szerelmi kalandokra gondolni, hisz mindennapra terminusa van
valami birónál, ha nem kompareál, elmarasztalják in contumaciam.
Dehogy irhat most verseket, előtte a magyar Corpus juris: azt
tanulja be könyv nélkül, jobban otthon van már a Tripartitum, az
edictumok és a curialis decretumok útvesztőjében, mint egy tabularis
fiscalis s még azzal is mortificálja a bécsi birákat, hogy a magyar
törvényekből tart nekik prelectiót.
S ezt az infernális haláltánczot járja három esztendeig! Három
legszebb évet a fiatalságából elpocsékol perpatvarkodással.
Végre csodák történnek. Három esztendő alatt dülőre jutnak a
perek. Alig hinné el az ember! Három esztendő! Hisz ez a
csecsemőkor egy processusnak az életéből. Ez alatt a mi kincsei
voltak a nagybátyjának otthon a szlavoniai várában, azokat
egyszerűen ellopták. Minden ember, a ki felügyelőnek volt oda
küldve, lopott belőlük valamit. Ha ellenőrző is volt, akkor ketten
loptak. Nem hagytak ott semmit: tiszta munkát csináltak. – No de
hát ezeket a kincseket Trenk Ferencz, a pandurvezér maga is úgy
rabolta össze, átok volt rajtuk. Hadd fussanak.
Félmillió oda!
Végre az uradalmak mégis csak felszabadultak. S azok is
megérnek magukban egy milliót. Jövedelmük az akkori idők
gazdálkodása mellett is fölment hatvanezer forintra. Még ebből is
lehet urat játszani.
Ekkor azonban előálltak a magasabb jogtudósok. Azt mondták,
hogy nem úgy van az! Trenk Ferencz eltestálhatta a maga birtokait
az unokaöcscsének; de annak, mint idegennek, nem lehet
Magyarországon fekvő birtokot elfoglalni. Az idegen örököst csak a
pénzértéke illeti meg a Trenk-féle magyar és szlavon uradalmaknak.
A királynő külön edictumával elrendelte, hogy a
Trenkuradalmakat el kell adni.
Meg is vette azokat az akkori királyi személynök, Grassalkovich
Antal, a kit ugyanazon évben emeltek grófi rangra, százötvenezer
forintért.
Tehát a másfél milliós örökség összezsugorodott százötvenezer
forintra.
De ha még itt megállt volna!
Hanem ekkor még előjöttek azok a kegyes intézetek, a kiknek a
megdicsőült legatumokat hagyott, azokat elébb rövidesen
kielégítették.
Ez operáczió után maradt Trenk Frigyesnek még hatvanhatezer
forintja.
Mikor aztán hozzá akart nyulni a veszett fejszének a nyeléhez,
akkor tudtára adták, hogy ez az örökölt summa megmarad
hitbizománynak, a testamentum értelmében. Hitbizományt pedig
csak magyar honosult vehet birtokba. Frigyesnek még hatezer
forintot le kellett fizetni az indigenátusért. – Ezen kellett volna
kezdenie a dolgát, ha olyan makacs fejű nem lett volna.
Így aztán szépen megtörve, megpuhítva került elő a nagy
örökösödési hadjáratából.
A királynő, hogy balzsamot cseppegtessen a fájó sebeire,
kinevezte Trenk Frigyest egy kürazir ezredéhez kapitánynak.
Trenk Frigyes megköszönte szépen a kegyelmes adományt, s
azzal beszerezve az egyenruháját, a szükséges paripákat, el is
foglalta a helyét a vértes ezredénél, melynek szállása ott volt a szép
magyar Alföldön, a derék Kecskemét városában.
Ott azután Trenk Frigyes egészen boldognak érezhette magát. A
magyar vendégszeretet mellett egyik disznótorból, vendégségből a
másikba vitték. Lakozás, névnap, emmaus meg nem esett nála
nélkül. Szerették is nagyon. Briliántos szelenczéket ugyan nem igen
kapott a szép hölgyektől, hanem annál jobb turós béléseket.
S ugyan okosan tette volna, ha ezt a szép életczélt elérve,
megmaradt volna mellette s nem zavarta volna fel többé a vizet
maga körül.
IX. FEJEZET.

A BALSORS KEZDETE.

Tehát a kecskeméti homokbuczkák között agarászni, a sós tó


nádasaiban kacsázni, hébe-hóba a katonákat rájtsuloztatni; hosszú
ebédeket végig enni, karczos idei bort inni és hosszúszáruból
dohányozni: – ez volt az élete annak a tűzlelkű ifjunak, a ki már
tizennyolcz éves korában a királyi udvar fényében pompázott,
fejedelmi kegyencz volt, a gárdát vezette, jó barátokkal és jó
ellenségekkel csak úgy komázott, a ki a berlini magas körökben
Európa legnagyobb tudósaival, lángszellemeivel társalgott,
Moszkvában a világ fő-fődiplomatáival országrendítő kabalákat
koholt és most itt sakkozik naponkint a kecskeméti prédikátorral, az
egyetlen emberrel, a kivel filozofálni lehet – diák nyelven.
Hát még az eltünt elysium! A fejedelmi szép asszonyok, a
regényes, kalandos, tüneményes varázsnők, az angyali Amália, a
dæmoni Miranda, a tündéri Jelvira, az istennői Anna! A kecskeméti
nép pedig puritán. A nők a templomban külön ülnek a férfiaktól, s
másutt nem látni őket. Negyven éves kora előtt az asztalnál sem
foglal helyet az asszony, ha idegen vendég van jelen, s a hajadon
leányt az első szobába sem eresztik, nehogy az ablakon kinézzen.
S itt kellett vesztegelni annak a nyughatatlan léleknek, a kinek a
félvilág sem volt elég.
Hányszor megátkozta Kecskemétet!
S hányszor visszaimádkozta ezt az átkot később! Bár csak
visszakerülhetne oda megint, a becsületes Gyenes uram portájára, a
jó fehér czipó, szalonna, meg az ürmös karafina mellé!
Huszonnyolcz éves volt már Frigyes s kétségbeesetten vette
észre, hogy kezd kihízni minden uniformisából: hasat ereszt, mint
biró uram.
Ekkor kap egy fekete pecsétes levelet, kurir által küldve. Az
öcscse tudatja vele szeretett édes anyjuknak halálesetét s meghívja
Danczkába, atyafiságos osztozkodásra.
Vegyes érzelmek tódultak Frigyes kedélyére, mikor e gyászhírt
vette. A szeretett anyáért fakadó könyekkel együtt járt az örvendező
szívdobogás, hogy alkalmat és okot talált Kecskemétről
megszabadulhatni.
Folyamodott rögtön a bécsi főhaditanácshoz szabadságolásért,
családi ügyeinek rendezése végett.
Az apai örökségét a porosz kormány elkobozta, hűtlenség miatt,
az anyai hagyaték iránt pénzbeli egyességet kellett kötnie a
testvéreivel.
Nem telt bele két hónap, hogy az engedélyt megkapta az
elutazásra.
Hej de örült, mikor válét mondhatott a vendégszerető magyar
városnak!
Arra gondolt, hogy Danczkából, a mint ott a dolgait végezé,
átvitorlázik Szentpétervárra, a hol akkor az orosz udvar tartózkodott,
s a rég nem látott kedves arczokat ismét ragyogásra kényszeríti
megjelenésével. – Talán ott is marad?
A bécsi ellenségei is úgy vélekedtek. Olyan nagyon megszerették,
hogy gondoskodtak felőle: csak egyszer kimenjen az országból, soha
többet vissza ne térhessen.
Egész messzeható ármányt koholtak ellene. Berlinbe irtak a
kormánynak, hogy Trenk Frigyes azért megy Danczkába, hogy a
király ellen orgyilkos merényletet kövessen el. Ausztria nagykövete
volt Berlinben Puebla gróf, s ennek a titkárát, Weingartent nyerték
meg a cselszövők czinkostársul.
Ki volt csinálva Bécsben, hogy Trenk Frigyest Danczkában időzése
alatt a poroszok kezébe juttassák.
S ez az annyi természetes észszel megáldott lángész oly együgyű
buta módra ment bele a kelepczébe, hogy maga sem tud az
önigazolására egyebet felhozni, mint véghetetlen elbizakodottságát.
Danczkában csaknem egyidejüleg megjelentek az öcscsei és
hugai. Azokkal hamarosan kiegyezett Frigyes. Az anyai örökségéből
ráeső részt átengedte nekik hétezer tallérért, a mit azok rögtön ki is
fizettek neki.
Ezzel tehát mehetett volna rögtön Danczkából akárhová: haza
Kecskemétre, vagy még hazább Szentpétervárra.
Ugyan miért kellett neki még tizennégy napig Danczkában
maradni?
Ha ezt az időt arra fordította volna, hogy elzarándokoljon az
anyja sírjához: ennek az anyának még a holtkeze is megvédte volna
a fejét nagy veszedelmektől. De hát ő maga azt mondja, hogy
mulatni maradt ott. Danczka kikötő város, mindig tele utazó néppel,
a kik szeretnek vigadni.
Maga beszéli el, hogy Danczkában egy ismerőse sem volt. Az
egyetlen ismeretsége hivatalból lett kötve az osztrák rezidenssel,
Abramson úrral.
Abramson úr született porosz volt. Soha Bécset nem is látta; ez
idő szerint is a porosz király alattvalója, kit csak Bestuseff ajánlatára
nevezett ki a bécsi kormány danczkai rezidensül.
Hát ennek az embernek a kezére bizta Trenk Frigyes a fejét.
Welcome to our website – the ideal destination for book lovers and
knowledge seekers. With a mission to inspire endlessly, we offer a
vast collection of books, ranging from classic literary works to
specialized publications, self-development books, and children's
literature. Each book is a new journey of discovery, expanding
knowledge and enriching the soul of the reade

Our website is not just a platform for buying books, but a bridge
connecting readers to the timeless values of culture and wisdom. With
an elegant, user-friendly interface and an intelligent search system,
we are committed to providing a quick and convenient shopping
experience. Additionally, our special promotions and home delivery
services ensure that you save time and fully enjoy the joy of reading.

Let us accompany you on the journey of exploring knowledge and


personal growth!

ebookfinal.com

You might also like