100% found this document useful (2 votes)
19 views

JavaScript A Beginner's Guide Fifth Edition John Pollock instant download

The document provides information on downloading various ebooks, including 'JavaScript: A Beginner's Guide, Fifth Edition' by John Pollock, along with links to other related titles. It also includes a detailed table of contents for the JavaScript book, covering topics from basic JavaScript concepts to advanced programming techniques. Additionally, it outlines copyright information and terms of use for the material provided.

Uploaded by

karebijangmu
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (2 votes)
19 views

JavaScript A Beginner's Guide Fifth Edition John Pollock instant download

The document provides information on downloading various ebooks, including 'JavaScript: A Beginner's Guide, Fifth Edition' by John Pollock, along with links to other related titles. It also includes a detailed table of contents for the JavaScript book, covering topics from basic JavaScript concepts to advanced programming techniques. Additionally, it outlines copyright information and terms of use for the material provided.

Uploaded by

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

Download the full version and explore a variety of ebooks

or textbooks at https://ebookmass.com

JavaScript A Beginner's Guide Fifth Edition John


Pollock

_____ Follow the link below to get your download now _____

https://ebookmass.com/product/javascript-a-beginners-guide-
fifth-edition-john-pollock/

Access ebookmass.com now to download high-quality


ebooks or textbooks
We have selected some products that you may be interested in
Click the link to download now or visit ebookmass.com
for more options!.

JavaScript: A Beginner's Guide, Fifth Edition Pollock

https://ebookmass.com/product/javascript-a-beginners-guide-fifth-
edition-pollock/

Javascript: Crash Course - The Complete Beginners Guide To


Learning JavaScript Programming In No Time! (Angularjs,
jQuery, JavaScript Visually) Nathaniel Hill
https://ebookmass.com/product/javascript-crash-course-the-complete-
beginners-guide-to-learning-javascript-programming-in-no-time-
angularjs-jquery-javascript-visually-nathaniel-hill/

150 ECG Cases (Fifth Edition) John Hampton

https://ebookmass.com/product/150-ecg-cases-fifth-edition-john-
hampton/

The Norton Field Guide to Writing (Fifth Edition)

https://ebookmass.com/product/the-norton-field-guide-to-writing-fifth-
edition/
The Norton Field Guide to Writing: with Readings (Fifth
Edition) Fifth Edition – Ebook PDF Version

https://ebookmass.com/product/the-norton-field-guide-to-writing-with-
readings-fifth-edition-fifth-edition-ebook-pdf-version/

Creating Effective Teams: A Guide for Members and Leaders


(NULL) Fifth

https://ebookmass.com/product/creating-effective-teams-a-guide-for-
members-and-leaders-null-fifth/

Technical Analysis Explained, Fifth Edition : The


Successful Investoru2019s Guide

https://ebookmass.com/product/technical-analysis-explained-fifth-
edition-the-successful-investors-guide/

Learning Web Design: A Beginner’s Guide to HTML, CSS,


JavaScript, and Web Graphics 5th Edition, (Ebook PDF)

https://ebookmass.com/product/learning-web-design-a-beginners-guide-
to-html-css-javascript-and-web-graphics-5th-edition-ebook-pdf/

English File Beginner. Teacher's Guide (for speakers of


Spanish) Fourth Edition Christina Latham-Koenig

https://ebookmass.com/product/english-file-beginner-teachers-guide-
for-speakers-of-spanish-fourth-edition-christina-latham-koenig/
Copyright © 2020 by McGraw-Hill Education (Publisher). 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, with
the exception that the program listings may be entered, stored, and
executed in a computer system, but they may not be reproduced for
publication.

ISBN: 978-1-26-045769-8
MHID: 1-26-045769-9

The material in this eBook also appears in the print version of this
title: ISBN: 978-1-26-045768-1, MHID: 1-26-045768-0.

eBook conversion by codeMantra


Version 1.0

All trademarks are trademarks of their respective owners. Rather


than put a trademark symbol after every occurrence of a
trademarked name, we use names in an editorial fashion only, and
to the benefit of the trademark owner, with no intention of
infringement of the trademark. Where such designations appear in
this book, they have been printed with initial caps.

McGraw-Hill Education 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 visit
the Contact Us page at www.mhprofessional.com.

Oracle and Java are registered trademarks of Oracle Corporation


and/or its affiliates. All other trademarks are the property of their
respective owners, and McGraw-Hill Education makes no claim of
ownership by the mention of products that contain these marks.
Screen displays of copyrighted Oracle software programs have been
reproduced herein with the permission of Oracle Corporation and/or
its affiliates.

Information has been obtained by Publisher from sources believed to


be reliable. However, because of the possibility of human or
mechanical error by our sources, Publisher, or others, Publisher does
not guarantee to the accuracy, adequacy, or completeness of any
information included in this work 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 McGraw-Hill Education 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 Education’s prior consent. 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 EDUCATION 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 LIMITED
TO IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR
A PARTICULAR PURPOSE. McGraw-Hill Education 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 Education 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 Education has no
responsibility for the content of any information accessed through
the work. Under no circumstances shall McGraw-Hill Education
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, and children, Eva, Elizabeth,
Elaine, and Evan, Bruce and Joy Anderson, and Dr. J.
D. and Linda Andrews

In memory of John and Betty Hopkins, James D. and


Livian Anderson, John William and Edith Hopkins,
Burley T. and Aline Price, “Doc” Flores, and Clifton
Idom
About the Author
John Pollock is employed as a software developer during the day
and works on Web sites and other projects during the evening. You
can find him on Twitter (@ScripttheWeb) or LinkedIn
(https://www.linkedin.com/in/john-pollock-82a2b074). John holds a
Bachelor of Arts in English from Sam Houston State University and
currently lives in New Waverly, Texas with his wife, Heather, and
children, Eva, Elizabeth, Elaine, and Evan.

About the Technical Editor


Christie Sorenson is a senior software engineer at ZingChart. She
has worked on JavaScript-based systems since 1997 and has been
fascinated with the evolution of the language. She has collaborated
and been the technical editor on several JavaScript and HTML books.
She holds a Bachelor of Science in Computer Science from University
of California, San Diego, and now lives in San Francisco with her
husband, Luke, and daughters, Ali and Keira.
Contents
ACKNOWLEDGMENTS
INTRODUCTION

1 Introduction to JavaScript
What You Need to Know
Basic HTML and CSS Knowledge
Basic Text Editor and Web Browser Knowledge
Which Version?
Client-Side and Server-Side Programming
Beginning with JavaScript
Prototype-Based
Interpreted Language
Numerous Environments
Putting It All Together
Online Resources
Try This 1-1: Use JavaScript to Write Text
Chapter 1 Self Test

2 Placing JavaScript in an HTML File


Using the HTML Script Tags
Identifying the Scripting Language
Calling External Scripts
Specifying when the Script Should Load
Using <noscript></noscript> Tags
Creating Your First Script
Writing a “Hello World” Script
Creating an HTML Document for the Script
Inserting the Script into the HTML Document
Try This 2-1: Insert a Script into an HTML Document
Using External JavaScript Files
Creating a JavaScript File
Creating the HTML Files
Viewing the Pages in Your Browser
Try This 2-2: Call an External Script from an HTML Document
Using JavaScript Comments
Inserting Comments on One Line
Adding Multiple-Line Comments
Chapter 2 Self Test

3 Using Variables
Understanding Variables
Why Variables Are Useful
Variables as Placeholders for Unknown Values
Variables as Time-Savers
Variables as Code Clarifiers
Defining Variables for Your Scripts
Declaring Variables
Assigning Values to Variables
Naming Variables
Understanding Data Types
Number
String
Boolean
Null
Undefined
Symbol
Object
Try This 3-1: Declare Variables
Using Variables in Scripts
Making a Call to a Variable
Adding Variables to Text Strings
Writing a Page of JavaScript
Creating the Framework
Defining the Variables
Adding the Commands
Modifying the Page
Try This 3-2: Create an HTML Page with JavaScript
Chapter 3 Self Test

4 Using Functions
What a Function Is
Why Functions Are Useful
Structuring Functions
Declaring Functions
Defining the Code for Functions
Naming Functions
Adding Arguments to Functions
Adding Return Statements to Functions
Calling Functions in Your Scripts
Script Tags: Head Section or Body Section
Calling a Function from Another Function
Calling Functions with Arguments
Calling Functions with Return Statements
Other Ways to Define Functions
Try This 4-1: Create an HTML Page with Functions
Scope/Context Basics
Global Context
Function Context
Block Context
Try This 4-2: Write Your Own Functions
Chapter 4 Self Test

5 JavaScript Operators
Understanding the Operator Types
Understanding Arithmetic Operators
The Addition Operator (+)
The Subtraction Operator (–)
The Multiplication Operator (*)
The Division Operator (/)
The Modulus Operator (%)
The Increment Operator (++)
The Decrement Operator (– –)
The Unary Plus Operator (+)
The Unary Negation Operator (–)
The Exponentiation Operator
Understanding Assignment Operators
The Assignment Operator (=)
The Add-and-Assign Operator (+=)
The Subtract-and-Assign Operator (–=)
The Multiply-and-Assign Operator (*=)
The Divide-and-Assign Operator (/=)
The Modulus-and-Assign Operator (%=)
The Exponent-and-Assign Operator (**=)
Try This 5-1: Adjust a Variable Value
Understanding Comparison Operators
The Is-Equal-To Operator (==)
The Is-Not-Equal-To Operator (!=)
The Strict Is-Equal-To Operator (===)
The Strict Is-Not-Equal-To Operator (!==)
The Is-Greater-Than Operator (>)
The Is-Less-Than Operator (<)
The Is-Greater-Than-or-Equal-To Operator (>=)
The Is-Less-Than-or-Equal-To Operator (<=)
Understanding Logical Operators
The AND Operator (&&)
The OR Operator (||)
The NOT Operator (!)
The Bitwise Operators
Special Operators
Understanding Order of Operations
Try This 5-2: True or False?
Chapter 5 Self Test

6 Conditional Statements and Loops


Defining Conditional Statements
What Is a Conditional Statement?
Why Conditional Statements Are Useful
Using Conditional Statements
Using if/else Statements
Using the switch Statement
Using the Conditional Operator
User Input from a Prompt
Try This 6-1: Work with User Input
Defining Loops
What Is a Loop?
Why Loops Are Useful
Using Loops
for
while
do while
for in, for each in, and for of
Using break and continue
Try This 6-2: Work with for Loops and while Loops
Chapter 6 Self Test

7 JavaScript Arrays
What Is an Array?
Why Arrays Are Useful
Defining and Accessing Arrays
Naming an Array
Defining an Array
Accessing an Array’s Elements
Using the length Property and Loops
Changing Array Values and Changing the Length
Try This 7-1: Use Loops with Arrays
Array Properties and Methods
Properties
Methods
Nesting Arrays
Defining Nested Arrays
Loops and Nested Arrays
Try This 7-2: Nested Arrays Practice
Chapter 7 Self Test

8 Objects
Defining Objects
Creating Objects
Naming
Single Objects
Try This 8-1: Create a Computer Object
Object Structures
Constructor Functions
Using Prototypes
The class Keyword
Helpful Statements for Objects
The for-in Loop
The with Statement
Try This 8-2: Practice with the Combination
Constructor/Prototype Pattern
Understanding Predefined JavaScript Objects
The Navigator Object
The History Object
Chapter 8 Self Test
9 The Document Object
Defining the Document Object
Using the Document Object Model
Using the Properties of the Document Object
Collections
The cookie Property
The dir Property
The lastModified Property
The referrer Property
The title Property
The URL Property
The URLUnencoded Property
Using the Methods of the Document Object
The get Methods for Elements
The open() and close() Methods
The write() and writeln() Methods
Using DOM Nodes
DOM Node Properties
DOM Node Methods
Try This 9-1: Add a DOM Node to the Document
Creating Dynamic Scripts
Styles in JavaScript
Simple Event Handling
Coding a Dynamic Script
Try This 9-2: Try Out Property Changes
Chapter 9 Self Test

10 Event Handlers
What Is an Event Handler?
Why Event Handlers Are Useful
Understanding Event Handler Locations and Uses
Using an Event Handler in an HTML Element
Using an Event Handler in the Script Code
Learning the Events
The Click Event
Focus and Blur Events
The Load and Unload Events
The Reset and Submit Events
The Mouse Events
The Keyboard Events
Try This 10-1: Focus and Blur
Other Ways to Register Events
The addEventListener() Method
The attachEvent() Method
The Event Object
DOM and Internet Explorer: DOM Level 0 Registration
Using event with Modern Event Registration
Properties and Methods
Event Information
Try This 10-2: Using addEventListener()
Creating Scripts Using Event Handlers
Show Hidden Content
Change Content
Custom Events
Chapter 10 Self Test

11 Introduction to Node.js
Introducing Node.js
Installing Node.js
Check for a Current Installation
Install Node.js
Write a “Hello World” Script
Using Node Modules
Using Native Node Modules
Asynchronous Execution
Non-Native Modules
Try This 11-1: Use a Custom Module
Installing a Database
Database Options
Install PostgreSQL
Create a Database Using pgAdmin
Try This 11-2: Test Some SQL Queries
Creating a Web Server
Chapter 11 Self Test

12 Math, Number, and Date Objects


Using the Math Object
What Is the Math Object?
How the Math Object Is Useful
Properties
Methods
Try This 12-1: Display a Random Link on a Page
Understanding the Number Object
Properties
Methods
Using the Date Object
Properties and Methods
Methods That Get Values
Methods That Set Values
Other Methods
How About Some Date Scripts?
Try This 12-2: Create a JavaScript Clock
Continuing Project
Getting to the Needed Data
Running Some Calculations on the Results
Chapter 12 Self Test

13 Handling Strings
Introduction to the String Object
The String Object
The String Literal
What’s the Difference?
Using the Properties and Methods of the String Object
The length Property
Methods of the String Object
Try This 13-1: Use indexOf() to Test an Address
Using Cookies
Setting a Cookie
Reading a Cookie
Try This 13-2: Remember a Name
Using Regular Expressions
Creating Regular Expressions
Testing Strings Against Regular Expressions
Adding Flags
Creating Powerful Patterns
Grouping Expressions
The replace(), match(), matchAll(), and search() Methods
More Information
Continuing Project
Chapter 13 Self Test

14 Browser-Based JavaScript
Window: The Global Object
Using the Properties of the Window Object
The closed Property
The frames Property
The innerWidth and innerHeight Properties
The length Property
The location Property
The name Property
The opener Property
The parent, self, and top Properties
The status and defaultStatus Properties
Try This 14-1: Use the location and innerWidth Properties
Using the Methods of the Window Object
The alert(), prompt(), and confirm() Methods
The print() Method
The setInterval() and clearInterval() Methods
The setTimeout() and clearTimeout() Methods
Try This 14-2: Use the setTimeout() and confirm() Methods
The Main Window and New Windows
The Tale of Pop-up Windows
Opening New Windows
Closing New Windows
Moving, Resizing, and Scrolling New Windows
The resizeBy() and resizeTo() Methods
The scrollBy() and ScrollTo() Methods
Working with Images
Rollovers
JavaScript and Frames
Purpose of Frames
Accessing Frames
Breaking Out of Frames
Using iFrames
Chapter 14 Self Test

15 JavaScript Forms and Data


Accessing Forms
Using the forms Array
Using an ID
Using the Properties and Methods of the Form Object
Properties
Methods
Ensuring the Accessibility of Forms
Using Proper Element and Label Order
Using <label></label> Tags
Using <fieldset></fieldset> Tags
Not Assuming Client-Side Scripting
Validation
Simple Validation
Techniques
Check Boxes and Radio Buttons
Try This 15-1: Request a Number
HTML5 and Forms
New Elements
New Input Types
New Attributes
HTML5 Form Validation
Try This 15-2: Validate a Phone Number with HTML5 or
JavaScript
AJAX and JSON
AJAX
JSON
Chapter 15 Self Test

16 Further Browser-Based JavaScript


Using jQuery
Obtaining jQuery
Getting Started: document.ready()
Using Selectors
Altering Classes
Methods for Effects
Further Reading
Try This 16-1: Use jQuery to Create Effects
Debugging Scripts
Types of Errors
Using the Console
Using a Lint Tool
Browser Developer Tools
JavaScript and Accessibility
Separate Content from Presentation
Enhancing Content
Try This 16-2: Make This Code Accessible
JavaScript Security
Page Protection
JavaScript and APIs from HTML
The <canvas> Element
Drag and Drop
Try This 16-3: Drag and Drop
Node.js App Completion
Update the Node.js Code
Update the Front-end Code
Need Help?
Chapter 16 Self Test

A Answers to Self Tests


Chapter 1: Introduction to JavaScript
Chapter 2: Placing JavaScript in an HTML File
Chapter 3: Using Variables
Chapter 4: Using Functions
Chapter 5: JavaScript Operators
Chapter 6: Conditional Statements and Loops
Chapter 7: JavaScript Arrays
Chapter 8: Objects
Chapter 9: The Document Object
Chapter 10: Event Handlers
Chapter 11: Introduction to Node.js
Chapter 12: Math, Number, and Date Objects
Chapter 13: Handling Strings
Chapter 14: Browser-Based JavaScript
Chapter 15: JavaScript Forms and Data
Chapter 16: Further Browser-Based JavaScript

Index
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 also like to thank my three daughters, Eva,
Elizabeth, and Elaine, as well as my son, Evan. I love all of 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 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 for their
outstanding help and support throughout the writing of this book.
Thanks to Lisa McClain, Emily Walters, Claire Yee, Snehil Sharma,
Sarika Gupta, Bart Reed, and to all the editors who worked on this
and previous editions of the book.
Thanks to my technical editor, Christie Sorenson, for editing and
checking over all the technical aspects of the book and for helping
me provide clear explanations of the topics that are covered.
I would like to thank God for the ability He has given me to help
and teach people by my writing. “In all your ways acknowledge Him,
and He shall direct your paths.” (Proverbs 3:6)
Introduction

W elcome to JavaScript: A Beginner’s Guide, Fifth Edition! Years


ago, I was surfing the Web and noticed that people were publishing
pages about themselves and calling them homepages. After viewing
a number of these, I decided to create a homepage myself. I had no
idea where to begin, but through trial and error I figured out how to
code HTML and publish my documents on a Web server. Over time, I
saw some interesting effects used on other homepages (like alert
messages that popped up out of nowhere or images that would
magically change when I moved my mouse over them). I was
curious and just had to know what was being done to create those
effects. Were these page creators using HTML tags I did not know
about?
Eventually, one site revealed what was being used to create those
effects: JavaScript. I went in search of information on it and came
across a few tutorials and scripts on the Web. Since I had
programmed in other languages (such as a relatively obscure
language called Ada), I was able to catch on to JavaScript fairly
quickly by looking at these tutorials and scripts.
I learned enough that I decided to create a Web site that would
teach HTML and JavaScript to beginners. As soon as I began the
project, I received questions from visitors that were way over my
head—forcing me to dig deeper and learn more about JavaScript. As
a result, I became completely familiar with this scripting language
and what it can do. Not only can you add fun effects to a Web page,
you can create scripts that will perform useful tasks, like validate
form input, add navigational elements to documents, and react to
user events.
The goal of this book is to help you to learn the basics of the
JavaScript language with as little hair pulling and monitor smashing
as possible. You do not need any prior programming experience to
learn JavaScript from this book. All you need is knowledge of HTML
and/or XHTML, Cascading Style Sheets (CSS), and how to use your
favorite text editor and Web browser (see Chapter 1 for more
information).

What This Book Covers


The 16 chapters of this book cover specific topics on the JavaScript
language. The first two chapters cover the most basic aspects of the
language: what it is, what you need to know to begin using
JavaScript, and how to place JavaScript into an HTML file. The
middle of the book (Chapters 3–14) covers beginning JavaScript
topics from variables all the way to using JavaScript with forms. The
final two chapters (Chapters 15–16) introduce some advanced
techniques, and point you toward resources if you want to learn
more about JavaScript once you have completed the book.
This book includes a number of special features in each chapter to
assist you in learning JavaScript. These features include

• Key Skills & Concepts Each chapter begins with a set of key
skills and concepts that you will understand by the end of the
chapter.
• Ask the Expert The Ask the Expert sections present commonly
asked questions about topics covered in the preceding text, with
responses from the author.
• Try This These sections get you to practice what you have
learned using a hands-on approach. Each Try This will have you
code a script through step-by-step directions on what you need to
do to in order to accomplish the goal. You can find solutions to
each project on the McGraw-Hill Professional Web site at
www.mhprofessional.com/computingdownload.
• Notes, Tips, and Cautions These elements call your attention
to noteworthy statements that you will find helpful as you move
through the chapters.
• Code Code listings display example source code used in scripts
or programs.
• Callouts Callouts display helpful hints and notes about the
example code, pointing to the relevant lines in the code.
• Self Test Each chapter ends with a Self Test, a series of 15
questions to see if you have mastered the topics covered in the
chapter. The answers to each Self Test can be found in the
appendix.

That is it! You are now familiar with the organization and special
features of this book to start your journey through JavaScript. If you
find that you are stuck and need help, feel free to contact me with
your questions. To contact me, you can reach me on LinkedIn
(https://www.linkedin.com/in/john-pollock-82a2b074) or you can
find me on Twitter (@ScripttheWeb).
Now it is time to learn JavaScript. Get ready, get set, and have
fun!
Chapter 1
Introduction to JavaScript

Key Skills & Concepts


• Using Text Editors, WYSIWYG Editors, and Web Browsers
• Defining JavaScript
• Differences Between Client-Side and Server-Side Programming

W elcome to JavaScript: A Beginner’s Guide, Fifth Edition! You’re


obviously interested in learning JavaScript, but perhaps you’re not sure
what you need to know to use it. This chapter answers some basic
questions about what JavaScript is, provides a brief history of the
language, and discusses the various environments that can use JavaScript
for programming.
JavaScript is ubiquitous on the World Wide Web. You can use JavaScript
both to make your Web pages more interactive, so that they react to a
viewer’s actions, and to give your Web pages some special effects (visual
or otherwise). JavaScript can now even be used to perform input/output
operations or build Web servers by using Node.js!
JavaScript often gets included with Hypertext Markup Language (HTML)
and Cascading Style Sheets (CSS) as the three recommended languages
for beginning Web developers (whether you build Web sites for business or
pleasure). Of course, you can build a Web page by using only HTML and
CSS, but JavaScript allows you to add additional features that a static page
of HTML can’t provide without some sort of scripting or programming help.

What You Need to Know


Before you begin learning about JavaScript, you should have (or obtain) a
basic knowledge of the following:

• HTML and Cascading Style Sheets (CSS)


• Text editors and Web browsers
• The different versions of JavaScript
• Differences in client-side and server-side programming

If you have this basic knowledge, you’ll do just fine as you work through
this book. Knowing another programming/scripting language or having
previous experience with JavaScript isn’t required. This book is a beginner’s
guide to JavaScript.
If you think you don’t have enough experience in one of the
aforementioned areas, a closer look at each one may help you decide what
to do.

Basic HTML and CSS Knowledge


While you don’t need to be an HTML guru, you do need to know where to
place certain elements (like the head and body elements) and how to add
your own attributes. This book will reference scripts in the head section
(between the <head> and </head> tags) and the body section (between
the <body> and </body> tags).
Sometimes, you will also need to add an attribute to a tag for a script to
function properly. For example, you may need to name a form element
using the id attribute, as shown in the following code:

<input type="text" id="thename">

If you know the basics of using tags and attributes, the HTML portion
shouldn’t pose any problems in learning JavaScript.
If you don’t have a basic knowledge of HTML, you can learn it fairly
quickly through a number of media. For example, you can buy a book or
look for some helpful information on the Web. A good book is HTML: A
Beginner’s Guide, Fifth Edition by Wendy Willard (McGraw-Hill, 2013). To
find information about HTML on the Web, check out
developer.mozilla.org/en-
US/docs/Learn/HTML/Introduction_to_HTML/Getting_started.
Occasionally, you will need to use CSS to add or change presentation
features on a Web page. We will mainly use CSS for the purposes of
dynamically changing CSS properties via JavaScript in this book. A good
place to learn CSS is developer.mozilla.org/en-
US/docs/Learn/CSS/Introduction_to_CSS/How_CSS_works.

Basic Text Editor and Web Browser Knowledge


Before jumping in and coding with JavaScript, you must be able to use a
text editor or HTML editor, and a Web browser. You’ll use these tools to
code your scripts.

Text Editors
A number of text editors and HTML editors support JavaScript. If you know
HTML, you’ve probably already used an HTML editor to create your HTML
files, so you might not have to change.
However, some HTML editors have problems related to adding
JavaScript code (such as changing where the code is placed or altering the
code itself when you save the file). This is more often the case when using
WYSIWYG (What You See Is What You Get) editors. It is best to use a code
editor such as Sublime or Visual Studio Code (recommended) or a plain
text editor. Some examples of text editors are Notepad, TextPad, and
Simple Text.

Web Browsers
Again, if you’ve been coding in HTML, you probably won’t need to change
your browser. However, some browsers have trouble with the newer
versions of JavaScript. The choice of Web browser is ultimately up to you,
as long as it’s compatible with JavaScript. I recommend the latest version
of one of following browsers to test your JavaScript code:

• Google Chrome
• Mozilla Firefox
• Microsoft Edge

New versions of these browsers continue to be produced. The newest


versions will continue to support more features.
To give you an idea of what some browsers look like, Figure 1-1 shows a
Web page when viewed in Chrome, and Figure 1-2 shows a Web page
when viewed in Mozilla Firefox.

Figure 1-1 A Web page viewed in Google Chrome


Figure 1-2 A Web page viewed in Mozilla Firefox

If you have an older browser and you can’t upgrade, a number of


features (mostly discussed later in the book) may not work in that browser.
Even so, the book can still help you learn the JavaScript language itself
(especially when you’re using Node.js instead of a browser), so you don’t
need to give up if you have an older browser.

NOTE
Even if you have one of the latest browsers, your web site viewers
may not, so it is always appropriate to understand what features
may not be supported in older browsers. This book will cover how to
handle a number of these issues.

Which Version?
The version of JavaScript being used by a browser is typically associated
with what version of ECMAScript it supports. You can see what ECMAScript
versions are supported by each browser at kangax.github.io/compat-
table/es6/.
ECMAScript is the international standard name and specification used for
the JavaScript language, so it’s not a new language but a standard that is
set for JavaScript, JScript, and other implementations of the language. For
more on ECMAScript, see www.ecma-
international.org/publications/standards/Ecma-262.htm.
At the time of this writing, the browsers recommended earlier in this
chapter should support at least ECMAScript 7. Node.js uses the V8
JavaScript engine, and the latest version of Node.js should also support at
least ECMAScript 7.

Remember, It’s Not Java


JavaScript and Java are two different languages. Java is a programming
language that must be compiled (running a program through software that
converts the higher-level code to machine language) before a program can
be executed. More information on the Java language can be found at
docs.oracle.com/javase/tutorial/.

Similarities to Other Languages


JavaScript does have similarities to other programming and scripting
languages. If you have experience with Java, C++, or C, you’ll notice some
similarities in the syntax, which may help you to learn more quickly.
Because it’s a scripting language, JavaScript also has similarities to
languages like PHP—which can also be run through an interpreter rather
than being compiled.
If you have programming or scripting experience in any language, it will
make learning JavaScript easier—but it isn’t required.

Client-Side and Server-Side Programming


The addition of Node.js allows JavaScript to be run on the server side in
addition to its traditional space on the client side. Learning a little about
these different environments will help you to understand the type of
programming that will need to be done when working on the client side
versus working on the server side.
A client-side language is run directly through the client being used by
the viewer. In the case of client-side JavaScript, the client is typically a Web
browser. Therefore, client-side JavaScript is run directly in the Web browser
and doesn’t need to handle any requests on a Web server. The limitation is
that client-side JavaScript cannot directly save information (though it can
send information to a server-side program to do so).

NOTE
Using the XMLHttpRequest object and the Fetch API allows
JavaScript to send and request data from the server. These will be
covered briefly in Chapter 14.

A client-side language is useful for tasks that deal with the content of a
document or that allow information to be validated before it is sent to a
server-side program or script. For instance, JavaScript can change the
content of one or more elements on a Web page when the user clicks a
link or presses a button (many other user actions can also be activated).
JavaScript can also be used to check the information entered into a form
before the form is sent to a server-side program to be processed. This
information check can prevent strain on the Web server by not allowing
submissions with inaccurate or incomplete information. Rather than the
program running on the server until the information is correct, that data
can be sent to the server just once with correct information. This also
benefits the user, since client-side validation can provide feedback much
more quickly to allow the user to make any corrections.

NOTE
While client-side JavaScript is able to help validate information sent
to the server, it cannot replace server-side validation since users
may have JavaScript disabled or unavailable in the device being
used (which allows them to bypass the client-side validation). For
security reasons, you should always use server-side validation,
regardless of whether or not you incorporate client-side validation.

For client-side JavaScript, the Document Object Model (DOM) is


provided so that you can access the different elements in a document. This
is typically accessible within a browser for HTML documents.
A server-side language runs on a server. For example, a server-side
language can be used to receive information from the user of a Web
browser and then take an action using that information. The server-side
program can send information back to the Web browser, save it to a
database, or do any number of other things that the Web browser cannot
do on its own.
However, a server-side language is likely to be limited in its ability to
deal with special features of the client that can be accessed with a client-
side language (like the width of the browser window or the contents of a
form before it’s submitted to the server).
Traditionally, server-side programming was done in languages other than
JavaScript, such as PHP, Perl, Python, Ruby, Java, and a number of others.
When Node.js came along, it allowed the opportunity to use JavaScript on
the server side in addition to the client side.
Depending on the needs of you or your company, you may or may not
use Node.js, but this book will cover it in order to provide a more complete
introduction to the JavaScript language and the different environments in
which JavaScript can be used.

Ask the Expert


Q: You mentioned that I could use a text editor or HTML
editor of my choice, but I’m not quite sure what that
means. What is a text editor and where can I find one?

A: A text editor is a program that you can use to save and edit written
text. Text editors range from simple to complex, and a number of
choices are available: Notepad, WordPad, and Simple Text, to name
a few. You can also purchase and download some from the Web,
like NoteTab or TextPad.
An HTML editor is either a more complex text editor or an editor
that allows you to add code by clicking buttons or by other means—
often called a What You See Is What You Get (WYSIWYG) editor.
For the purposes of JavaScript coding, you may decide to use a
more code-oriented program that can offer features such as code
highlighting, completion, debugging tools, and more, such as Visual
Studio or Sublime. I recommend one of these tools since they offer
more features to assist with programming.
Q: What exactly do I need to know about using a text editor?

A: Basically, you only need to know how to type plain text into the
editor, save the file with an .html, .css, or .js extension, and be able
to open it again and edit it if necessary. Special features aren’t
needed because HTML, CSS, and JavaScript files are made up of
plain text, but the features of coding tools like Visual Studio and
Sublime can be extremely helpful as you write HTML, CSS, and
JavaScript code.

Q: What do I need to know about using a browser?

A: All you absolutely need to know is how to open a local HTML file on
your computer (or on the Web) and how to reload a page. If you
don’t know how to open an HTML file from your own computer,
open your browser and go to the address bar. Type in file:///C:/
and press ENTER. If you are using a drive letter other than C, type
that letter instead of C in the example. The browser will display files
and folders from the drive and allow you to navigate to the file you
want to open. Click an HTML file to open it. The following illustration
shows how this might look after navigating into a few folders from
the C drive using Google Chrome:
Q: Where do I get those browsers you mentioned?
A: Here are links for the browsers:
• Google Chrome www.google.com/chrome/
• Mozilla Firefox www.mozilla.com/firefox
• Microsoft Edge https://www.microsoft.com/en-
us/windows/microsoft-edge

Beginning with JavaScript


JavaScript came about as a joint effort between Netscape Communications
Corporation and Sun Microsystems, Inc. The news release of the new
language was issued on December 4, 1995, back when Netscape Navigator
2.0 was still in its beta version. JavaScript version 1.0 became available
with the new browser. (Before its release as JavaScript, it was called
LiveScript.)
JavaScript is a prototype-based interpreted language that can be used in
numerous environments. To expand on this definition, let’s look at its
important parts one by one.

Prototype-Based
Prototype-based means that JavaScript is an object-oriented programming
language that can use items called objects. However, the objects are not
class-based, so no distinction is made between a class and an instance;
instead, objects inherit from other objects via the prototype property.
JavaScript has made changes in ES6 to allow you to use the class keyword,
but the language is not technically class-based. You’ll learn how to work
with JavaScript objects in Chapter 10. You don’t need to understand them
in detail until you know a few other features of the language.

Interpreted Language
An interpreted language doesn’t require a program to be compiled before it
is run. All the interpretation is done on-the-fly by the client. The client,
such as a Web browser or the Node.js environment, is what is being used
to interpret the language.
With a compiled programming language, before you can run a program
you have written, you must compile it using a special compiler to be sure
there are no syntax errors. With a scripting language, the code is
interpreted as it is loaded in the client. Thus, you can test the results of
your code more quickly. However, errors won’t be caught before the script
is run and could cause problems with the client if it can’t handle the errors
well. In the case of JavaScript, the error handling is up to the client being
used by the viewer.

Numerous Environments
JavaScript can be run in numerous environments. Most commonly, the
environment is a Web browser since JavaScript has basically become the
default scripting language used when adding dynamic interactivity to a
Web page.
While JavaScript is often thought of in relation to Web browsers, a
number of other environments use it for programming, such as Adobe
Acrobat and Flash (based on ECMAScript). In addition to this, Node.js
allows JavaScript to be used as a server-side language or to perform
input/output operations on an operating system. This book will cover
JavaScript in Node.js and in the Web browser at a beginner level to help
you get started with programming in both environments.

Putting It All Together


To begin, you might wonder how JavaScript is run in a browser. Where
should you write your JavaScript code, and what tells the browser it is
different from anything else on a Web page? The answers are general for
now, but the next chapter provides more details.
JavaScript runs in the browser by being added into an existing HTML
document (either directly or by referring to an external script file). You can
add special tags and commands to the HTML code that will tell the browser
that it needs to run a script. When the browser sees these special tags, it
interprets the JavaScript commands and will do what you have directed it
to do with your code. Thus, by simply editing an HTML document, you can
begin using JavaScript on your Web pages and see the results.
For example, the following code adds some JavaScript to an HTML file
that writes some text onto the Web page. Notice the addition of <script>
and </script> tags. The code within them is JavaScript.

The next chapter looks at how to add JavaScript in an HTML file by


using the <script> and </script> HTML tags. This will be your first step on
the road to becoming a JavaScript coder!

Online Resources
To find additional information online to help you with JavaScript, here are
some useful resources:

• Projects/code for this book: github.com/JohnPollock/JSABG-ED-5


• An excellent tutorial site that includes cut-and-paste scripts:
www.javascriptkit.com
• A place where you can address questions about JavaScript to fellow
coders: stackoverflow.com/questions/tagged/javascript

Try This 1-1 Use JavaScript to Write Text

pr1_1.html

This project shows you JavaScript in action by loading an HTML document


in your browser. The script writes a line of text in the browser using
JavaScript.

Step by Step
1. Copy and paste the code shown here into your text editor:

2. Save the file as pr1_1.html and open it in your Web browser. You
should see a single line of text that was written with JavaScript. (To
open a file in your Web browser, go to the File menu and look for an
option that says something like Open, or Open File, and select it. You
should be able to browse for the file you want to open as you would
with other programs.)

Try This Summary


In this project, you copied and pasted a section of code into a text editor
and saved the file. When you opened the saved file in your Web browser, a
line of text was displayed in the browser. This text was written in the
browser window using JavaScript. You will see more about how this type of
script works in Chapter 2.
Chapter 1 Self Test
1. You must know which of the following to be able to use JavaScript in
a Web browser?
A. Perl
B. C++
C. HTML
D. SGML
2. Which of the following is something you should have to use
JavaScript in a Web page?
A. A Web browser
B. A C++ compiler
C. A 500GB hard drive
D. A DVD-RW drive
3. The choice of a Web browser is up to you, as long it’s compatible with
__________.
A. Flash
B. VBScript
C. JavaScript
D. Windows XP
4. JavaScript and Java are the same language.
A. True
B. False
5. __________ is the international standard name and specification used
for the JavaScript language.
A. JScript
B. LiveScript
C. ECMAScript
D. ActionScript
6. JavaScript has similarities to other programming and scripting
languages.
A. True
B. False
7. Before its release as JavaScript, JavaScript was called __________.
A. Java
B. JavaCup
C. LiveScript
D. EasyScript
8. JavaScript is __________.
A. prototype-based
B. class-based
C. object deficient
D. not a language that uses objects
9. A fancy code editor is necessary to edit JavaScript files.
A. True
B. False
10. In what ways can a fancy code editor help a JavaScript programmer?
A. It may offer features such as movies and video games.
B. It may offer features such as code highlighting, completion,
debugging tools, and more.
C. It may offer features such as electronics repairs and warranties.
D. It can’t help at all.
11. A(n) __________ language doesn’t require a program to be compiled
before it is run.
A. programming
B. server-side
C. interpreted
D. computer
Chapter 2
Placing JavaScript in an HTML File

Key Skills & Concepts


• Using the HTML Script Tags
• Creating Your First Script
• Using External JavaScript Files
• Using JavaScript Comments

N ow that you have been introduced to JavaScript, you’re ready to start


coding. This chapter introduces front-end (browser-based) JavaScript, while
Chapter 3 will introduce how JavaScript can be used with Node.js.
Since front-end JavaScript code is included in HTML documents, you need
to know how to tell Web browsers to run your scripts. The most common
way to set off a script is to use the HTML <script> and </script> tags in
your document. You can place your script tags in either the head or the
body section of an HTML document.
This chapter first shows you how to use the script tags to begin and end
a segment of JavaScript code. Then, you will get started creating and
running your first scripts. At the end of the chapter, you will learn how to
add JavaScript comments to document your scripts.

Using the HTML Script Tags


Script tags are used to tell the browser where code for a scripting language
will begin and end in an HTML document. In their most basic form, script
tags appear just like any other set of HTML tags:
As you can see, there is the opening <script> tag, the JavaScript code,
and then the closing </script> tag. When you use just the basic opening
and closing tags like this, almost all browsers will assume that the scripting
language to follow will be JavaScript.
In HTML, the script tag is not case sensitive. However, in XHTML, the
script tag must be in lowercase. JavaScript is case sensitive in all versions,
so you will need to be more careful with it. In this book, I will use HTML5
for the HTML code (even though HTML5 is not case sensitive, I will write the
tag and attribute names in lowercase). For the JavaScript code, I will use
the case that is needed for it to function correctly.
The <script> tag has six possible attributes: type, language
(deprecated), charset, src, defer, and async. These attributes give the
browser additional information about when the script should load, the
scripting language, and the location of an external JavaScript file (if any).

Identifying the Scripting Language


The scripting language between the opening and closing script tags could be
JavaScript, VBScript, or some other language, though JavaScript is almost
always set as the default scripting language in browsers. If desired, you can
explicitly identify JavaScript as the scripting language by adding the type
attribute with the value of “text/javascript” to the opening script tag:

NOTE
The type attribute in the opening script tag is required in XHTML in
order for the Web page to validate, but is optional in HTML.

In the past, the language attribute was used to identify the scripting
language, but is ignored in modern browsers and will cause the page to be
invalid in XHTML and HTML5. It should no longer be used.
The charset attribute, which allows for the character set of the JavaScript
code to be specified, is not recognized by most browsers and is not
recommended.
You will see additional important attributes discussed in the following
sections.

Calling External Scripts


Script tags allow you to call an external JavaScript file in your document. An
external JavaScript file is a text file that contains nothing but JavaScript
code, and it is saved with the .js file extension. By calling an external file,
you can save the time of coding or copying a long script into each page in
which the script is needed. Instead, you can use a single line on each page
that points to the JavaScript file with all of the code.
You can call external scripts by adding the src (source) attribute to the
opening script tag:

<script src="yourfile.js"></script>

This example calls a JavaScript file named yourfile.js from any HTML
document in which you place this tag. Be sure there are no spaces or code
between the opening and closing script tags, as this may cause the script
call to fail.
If the script is extremely long, using the src attribute to add the script to
multiple pages can be much quicker than inserting the entire code on each
page. Also, the browser will cache the external JavaScript file the first time it
is loaded, making subsequent Web pages that use the script render faster.
Using an external script is also helpful when dealing with page validation
and when trying to keep script code separated from markup (HTML) code.
In addition, the src attribute allows you to include other people’s script files
as libraries in the very same way.
By default, script files are loaded in the order in which they are placed in
the HTML code (synchronously). There are some options for altering this
behavior, which are described in the next section.

Specifying when the Script Should Load


The last two attributes, defer and async, allow you to specify when an
external script should be loaded. These attributes are not fully supported by
older browsers, or may behave differently, so be aware that an older
browser may not execute the script when it is expected to do so.

The defer Attribute


The defer attribute allows you to specify that an external script file should
be loaded, but should not execute until the page has completed parsing (the
</html> tag has loaded). The following <script> tag would defer the
execution of the external JavaScript code:

<script src="file.js" defer></script>

NOTE
If you are using XHTML, set this attribute using defer=“defer”.

Support for this attribute is available in Internet Explorer 4+, Firefox


3.5+, and Chrome 7+. Internet Explorer 4–7 will allow this attribute to work
on inline scripts as well, but versions 8 and above only support this attribute
on external scripts as other browsers do.

The async Attribute


When the async attribute is set, the page can continue to load without
waiting for the script to load, and the script will execute after it completely
loads. Here is an example:

<script src="file.js" async></script>

NOTE
If you are using XHTML, set this attribute using async="async".

Support for this attribute is available in Firefox 3.5+ and Chrome 7+.

Using <noscript></noscript> Tags


One way of providing alternate content for those viewers without JavaScript
(or with JavaScript turned off) is to use the noscript tag. The <noscript>
</noscript> tags may be placed anywhere in the HTML document and can
contain any content needed for those viewers browsing without JavaScript.
For example:
This example displays the phrase “The color is red.” to the viewer either
through JavaScript or through the text within the <noscript></noscript>
tags.

CAUTION
Some older browsers may not handle the noscript tag correctly and
won’t display the content in either section. If your users have older
browsers, another alternative is to display the content on the page
and then use JavaScript to enhance the content for those who are
able to display it with JavaScript on.

The <noscript> tag can be useful at times, but there are often better
ways to provide the same content to those without JavaScript (avoiding the
document.write() method, for instance). You will learn more about
accessible JavaScript as you progress through this book.

Ask the Expert


Q: Do I always need to use script tags to add JavaScript to a
page?

A: It’s possible to use event handlers that allow you to write short bits
of script within the event-handling attribute of an HTML tag. You’ll
learn about event handlers in Chapter 13.

Q: What about the language attribute?


A: The language attribute once was used to specify the scripting
language to be used, and for a time some browsers allowed a
JavaScript version to be specified (for example,
language=“JavaScript1.2”). This is no longer the case, and the
attribute has been deprecated. Since it is completely ignored in
Other documents randomly have
different content
johdossa. Oltuaan perikadon partaalla oli yhtiö saanut osakseen
entiseen verraten onnellisia vuosia. Tämän kaiken johdosta hänelle
50-vuotispäivänä lausuttiin kiitollisuuden ja kunnioituksen
tunnustuksia.

Miten nämä tunnustukset, ja rakkaudenosoitukset Kihlmania


ilahduttivat ja liikuttivat, on hän kirjeessä tyttärelleen julkilausumat
melkein hämmästyttävin sanoin — niin ne eroavat jokapäiväisestä
sovinnaisuudesta, joka tavan mukaan leimaa tällaisten
merkkipäivienkin vieton. "Toukokuu on antanut minulle runsaasti
ilonaiheita. Kaikkialla olen saanut korjata rikkaita, verrattomia
hyvityksen ja kiitollisuuden satoja. En ole hävennyt vastaanottaa,
mitä minulle on annettu, sillä minä tiedän, että olen yrittänyt
toimittaa jotain maailmassa. Olen vastaanottanut sen
kainostelematta (utan pryderi), mutta mitä sisäisimmällä
kiitollisuudella. On juhlahetkiä elämässä, jotka ovat unohtumattomia,
autuaita hetkiä, jotka saavat aavistamaan, mitä taivaallinen autuus
on. — Lisäksi on minulla ollut onnea ja iloa, jonka eroavat oppilaat
ovat tuottaneet, kun ovat kunnialla suorittaneet
(ylioppilas)tutkintonsa. Ja että Oswald oli niiden joukossa, se oli
kaiken huippu."

*****

Edellisessä olemme jo maininneet eri seikkoja, jotka eivät kuulu


ainoastaan 1875, vaan myöskin 1876 v:n historiaan, johon tämä luku
päättyy. Täydennykseksi kerrottakoon tässä vielä muutamia yksityisiä
tapahtumia.

Elokuun 30 p:nä 1875 kauppaneuvos A. A. Levón Vaasassa kuoli


lyhyen ajan sairastettuaan. Samoin kuin Viktor Schauman oli
Levónkin Kihlmanin nuoruudenystäviä, vaikka 5 vuotta vanhempi.
Varhemmin heitä yhdisti herännäisyys, johon Levónkin oli liittynyt;
uuden Vaasan perustamisajoilta heillä taas oli ollut paljon yhteisiä
liikeharrastuksia. Heidän kirjeenvaihtonsa oli sangen taaja ja osoittaa
ystävällistä, luottamuksellista väliä, vaikkei sentään Levónille
lähetetyissä kirjeissä tapaa yhtä sydämellisiä tunteenpurkauksia kuin
Schaumanille osoitetuissa. Kumminkin oli tämänkin ystävän
poismeno tuntuva surunaihe Kihlmanille, ja hartaasti hän otti osaa
Levónin perheen ja suurten liikeyritysten kohtaloon. Pitkissä
kirjeissä, joita hän lähetti muille tuttavilleen Vaasaan, hän esittää
mietteitä ja neuvoja niiden hoidosta. Eräs hovioikeudenneuvos Jonas
Sandmanille osoitettu kirje (11/10 1875) päättyy: "Mitä olen
sanonut, on lähtenyt sydämestä, joka vuosikymmeniä on ollut
kiintynyt poismenneeseen ystäväämme, ja nyt mielellään tahtoisi
edistää hänen tarkoituksiaan ja jälkeenjääneiden lastensa parasta."

Keväällä 1876 tapahtui onnettomuus, joka syvästi koski Kihlmaniin


ja hänen vaimoonsa. Maaliskuun alussa lähti Oswald, joka nyt ensi
vuoden ylioppilaana halusi sekä nauttia että hyötyä vapaudestaan,
Keuruulle täydentääkseen suomenkielen taitoaan. Hän asui
pappilassa, rovasti Bergrothilla, missä hän, niinkuin hyvissä
sukulaisissa ainakin, oli kuin kotona. Pääsiäislauantaina (15/4) hän
oli lähtenyt ulos pyssy mukana. Äkkiä hän huomaa tavallisten
varisten joukossa yhden valkoisen ja toivoen saavansa harvinaisen
linnun yliopiston museoon hän alkaa ajaa variksia takaa. Aita sattuu
eteen, kiireessään hän yrittää hypätä yli pitäen pyssyä piipusta, hana
hipaisee aidakseen, pyssy laukeaa ja vie häneltä oikean käden
peukalon, jota paitsi muutamia haulia tunkee kasvoihinkin. —
Vahinko oli vakava, mutta meneehän semmoisissa tapauksissa usein
henkikin. Apteekkari sitoi haavan, kunnes lääkäri tuotiin
Jyväskylästä, ja pappilassa oli mitä hellin hoito tarjona. Mutta miten
vastaanotettaisiin sanoma kodissa, ja mitä varsinkin äiti sanoisi? Se
kysymys painoi ennen kaikkea Oswaldin mieltä, hänen koettaessaan
miehekkäästi kestää kohtaloaan. Pääsiäispäivänä k:lo 11 a.p.
Kihlman sai sähkösanoman, jonka järkyttävään
tapaturmailmoitukseen (rauhoittavassa tarkoituksessa) oli liitetty
sanat: "toivoaksemme ei hengenvaaraa!" Todellisesti olivat sanat
omansa enentämään levottomuutta. Vaimolleen, joka vielä oli
heikkovoimainen erään taudin jälkeen, josta vast'ikään oli toipunut,
Kihlman ei uskaltanut mainita mitään. Hänen täytyi yksin kantaa
tuskallista salaisuutta ja odottaa tarkempia tietoja, jotka viipyivät
kauan, sillä kirjeet ja sähkösanomat olivat Keuruulta lähetettävät
Jyväskylän kautta. Puolitoista viikkoa kului ennenkuin äitikin sai
tietää tuon jobinpostin. Sillä aikaa oli Kihlman lähettänyt
kansanhaavurin Matts Haglundin (vanha tuttu ja ystävä
Kruununkylän ajoilta, joka oli saanut virallisen luvan toimia
haavalääkärinä) Keuruulle hoitamaan Oswaldia ja kirjoittanut useita
kirjeitä pojalleen. Ja nämä kirjeet ansaitsevat erityistä huomiota, ne
kun ovat niin täynnä isänrakkautta ja hienotunteisuutta. Vaikka isä ei
salaa tuskallista levottomuuttaan, ei kirjeissä tapaa ainoatakaan
noista nuhtelevista jälkiviisasteluista: kuinka saatoitkaan olla niin
varomaton! j.n.e., jotka vain ovat kiviä onnettomuuden kohtaaman
kuormaan. Sitä vastoin hän kaikin tavoin koetti ylläpitää rakkaan
poikansa rohkeutta.

(18/4) "Toivoaksemme ei hengenvaaraa! Siis on olemassa


ainoastaan toivoa, että henki on pelastettavissa. — Tilani on näinä
päivinä ollut tuskallinen. Sieluni on alati ollut luonasi, enkä
kuitenkaan ole tiennyt, miten Sinun on. — Juuri epävarmuuden
vuoksi — — olen tahtonut säästää äitiä. — Rakas Oswaldini! Toivon,
että kannat tuskiasi miehen rohkeudella ja kestäväisyydellä.
Kärsimys terästää luonnetta. Kärsimys voi sitä tehdä, kärsimys kun
vie ihmisen itseensä. Kärsimyksen tulee viedä Jumalan luo. Kärsimys
voikin sen tehdä, sillä oikea itsensätuntemus vie Jumalan,
korkeimman hyvän, luo. Jumala auttakoon Sinua, lapsi raukka,
ruumiin ja sielun puolesta. Jumala siunatkoon Sinua!"

(22/4) Saatuaan lähempiä tietoja: "Kiitän kyyneleet silmissä, että


elät ja että on toivoa parantumisestasi. — — Sinun täytyy oppia
kirjoittamaan vasemmalla kädellä, ja hyvällä tahdolla voi
vaikeampaakin oppia. — — Älä anna mielesi masentua
tarpeettomista tulevaisuudenhuolista. Luota Jumalaan ja tee joka
hetki, mitä Sinun tulee! Ole rauhallinen ja tyyni."

(24/4) "Kuinka onnellisia saammekaan olla onnettomuudessa!


Miten toisin olisikaan voinut käydä!"

(27/4) "Tänään olen kertonut Äidille onnettomuutesi. — Olethan


Sinä meillä vielä, joskin olet ruumiillisesti vahingoittunut. Henkisesti
olet terve, ja se on paljon, paljon enemmän! Tahdomme yhdessä
kantaa ruumiillista vammaasi. Toivoakseni me yhdessä jaksamme
jotakin. — — Iloitse paljosta, joka Sinulla vielä on! Jumala
siunatkoon Sinua, Oswaldini!"

Haava parantui verraten nopeasti, mutta uutta peukaloa ei


kasvanut entisen sijaan, niinkuin yksi pikku veljistä oli olettanut!
Toukokuun lopulla tuli Oswald kotia. Hänen oma ja isän toivo, että
hän onnettomuudestaan huolimatta johonkin kykenisi maailmassa,
oli täysin määrin toteutuva. J. V. Snellman ei ollut suotta lohduttanut
edellistä sanoilla, "eihän sitä peukalolla ajatella!"
III.

REHTORI, LIIKE- JA VALTIOPÄIVÄMIES 1877-1884.

Edellisessä luvussa kuvattu ajanjakso Kihlmanin elämää oli


verrattuna 1860-luvun loppukauteen yleensä rauhallinen ja
menestyksellinen, mutta nyt seuraa taasen sarja levottomia, jopa
tuskallisia vuosia. Ajanluonteen vaihdos aiheuttaa, että aloitamme
uuden luvun.

Ensiksi on puhuttava pitkästä säätykokouksesta, joka neljän


kuukauden kesälomaa lukuunottamatta kesti kokonaisen vuoden:
23/1 1877 — 24/1 1878. Että Kihlmanin kyky jo oli tyystin tunnettu,
sen todistavat hänen lukuisat luottamustoimensa. Hän oli
valitsijamies, vakinainen jäsen valtio-, tarkastus-, raha-
(kultakannalle siirtymiskysymyksen käsittelyä varten) ja lisätyssä
talous-valiokunnassa, varamies yleisessä valitus-, lisätyssä
suostunta- ja lisätyssä laki- ja talous-valiokunnassa sekä valittiin
valtiopäivien lopulla jälleen pankkivaltuusmiehen varamieheksi ja
säätytalo-valiokunnan jäseneksi! — Muiden koulunopettajain
edustajain kanssa Kihlman teki kolme anomusehdotusta:
suomenkielisten koulujen lisäämisestä, teollisuuskoulujen
perustamisesta ja kouluasetuksen muuttamisesta koulunopettajain
palkankorotuksen perusteihin nähden.

Kun seuraavassa teemme selkoa Kihlmanin esiintymisestä


erinäisissä kysymyksissä, rajoitumme tietysti semmoiseen, jolla
vieläkin on merkitystä taikka joka on hänelle erityisesti kuvaavaa.
Kevätkaudelta on kuitenkin vähän mainittavana, sillä työ oli silloin
pääasiallisesti keskittynyt valiokuntiin.

On sanottu, että Kihlman useimmiten esiintyi vasta keskustelujen


loppupuolella, mutta kyllä joskus tapahtui niinkin, että hän aloitti
keskustelun. Niin teki hän, kun (27/3) käsiteltävänä oli yleisen
valitusvaliokunnan mietintö prof. O. Donnerin anomusehdotuksesta
yliopiston vakinaisten opettajien lisäämisestä. Pitkässä puheessa,
jossa hän pääasiassa kannatti anomuksen tarkoitusta, hän otti
erikoisesti tarkastaakseen tieteen yleismaailmallisuuden periaatetta,
jonka nojassa vastikään "eräs ulkomaalainen oli saanut viran
yliopistossa, vaikka kotimainen mies oli hakenut samaa virkaa ja
huomattu siihen päteväksi." [Tarkoittaa ruotsinmaalaisen toht. M. G.
Mittag-Lefflerin nimittämistä matematiikan professoriksi; toinen
pätevä hakija oli suomalainen toht. Ernst Bonsdorff.]. Koska tämä
aikanaan merkillinen osa lausuntoa vieläkin pitää paikkansa, otamme
sen tähän:

— "Sanotaan, että tiede on yleismaailmallinen, ja epäilemättä on


siinä perää. Erittäin lienee se totta eräisiin tieteisiin nähden. Mutta
miten yleismaailmallinen tiede liekään, tarvitsee se kuitenkin paikan
maailmassa, missä se voi seisoa. Tieteen harjoittajat ovat ihmisiä ja
semmoisina he tarvitsevat perustan, mille voivat asettua. Tämä
perusta on isänmaa luontoineen, kansoineen. Totta on: tiedemies
seisoo niin korkealla, että hänen katseensa ulottuu kaikkeuden yli ja
siis kauas yli isänmaan ahtaiden rajojen. Mutta ei hän kumminkaan
seiso niin korkealla, että isänmaallinen ja lähinnä oleva sen vuoksi
tulisi mitättömäksi. Päinvastoin tulee näennäisesti vähäpätöinenkin
tiedemiehelle merkitseväksi, ja se mikä toisista ihmisistä on pientä,
tulee hänelle suureksi, koska se täyttää paikkansa suuressa
kokonaisuudessa. Juuri sentähden on tiedemiehestä tärkeää luoda
valoa isänmaahan, sen luontoon, kieleen, historiaan, tapoihin,
lakeihin ja oloihin, ja kun tiedemies niin tekee ja yleismaailmallisen
tieteen alttarille laskee isänmaallisten tieteellisten harrastustensa
hedelmät, ei ole ollut tapana pitää tätä työtä epätieteellisenä, vaan
on se päinvastoin tuottanut tiedemiehelle kunniaa. Usein on hänen
nimensä ainoastaan sen kautta pelastunut unohduksesta. Sen vuoksi
saattaa, ymmärtääkseni, sanoa, että tiede on kansallinen samalla
kuin se on yleismaailmallinen, eikä näin ollen, kun on perustettu
puhtaasti tieteellisiä laitoksia, niinkuin tiedeakatemioita, isänmaallista
puolta ole katsottu vähäarvoiseksi. Sen vuoksi on tiedeakatemiat
perustettu omaan maahan, ja ulkomaalaisia on kutsuttu niiden
kunniajäseniksi, jotta siten kunnioitettaisiin heitä ja itseään, mutta
akatemiain varsinaiset työntekijät ovat kuitenkin kotimaisia miehiä,
kukin alallaan. Jos nyt Suomella olisi varaa toimeenpanna oma
tiedeakatemia, ja jos Suomi paikkojen asettamisessa noudattaisi
periaatetta, että yksistään tieteellinen ansio on silmällä pidettävä,
niin valittaisiin luonnollisesti akatemian jäseniksi, ei kotimaisia
miehiä, vaan kuuluisuuksia kaikista maailman kolkista. Jos
isänmaallisuus on merkitystä vailla, voitaisiin siten kokoonpantu
akatemia sijoittaa mihin tahansa Suomen ulkopuolelle, ja Suomella
olisi vain kunnia lähettää tälle tiedeakatemialle palkkaneljännekset
sekä kunnia siitä, että se ennen muita on perustanut aito
kosmopoliittisen tiedeakatemian. Jos siis tästä näkyy, että on täysi
syy epäillä, onko tieteelle eduksi puhtaasti tieteellisten virkojen
asettamisessa huomioonottaa ainoastaan tieteellisiä ansioita, niin
tulee syy vielä painavammaksi, kun muistetaan, että professorinvirat
Suomen yliopistossa eivät ole vain tieteellisiä virkoja, vaan että
professorien ollessaan tiedemiehiä myöskin tulee olla opettajia,
pedagogeja. Opettajana tulee yliopistonopettajan suullisesti vaihtaa
ajatuksia oppilaidensa kanssa, ja voidakseen menestyksellä sitä
tehdä ja siten menestyksellisesti opettaa, on häneltä vähintään
vaadittava, että hän osaa maamme äidinkieliä. Jollei hän osaa niitä
eikä edes pidä velvollisuutenaan oppia niitä, on hänen suhteensa
oppilaihin muodostuva erittäin vaikeaksi. Jos suomalainen
nuorukainen jo voi vetäytyä antautumasta tieteelliselle uralle, kun
hän huomaa sen olevan jotenkin toivottoman, niin lienee opettajalle,
joka ei osaa molempia kieliämme, perin vaikeaa herättää nuorisossa
tieteellistä harrastusta, ja samoinkuin hän siten vieraantuu
oppilaistaan, vieraantuu hän myöskin ympäröivästä elämästä. Hän ei
ymmärrä sitä, ja siitä on vain yksi askel väärinkäsitykseen, ja
väärinkäsitys voi sittemmin kehittyä joksikin sitäkin pahemmaksi On
olemassa olosuhteita, joihin nähden ei ajan pitkään voi pysyä
välinpitämättömänä tai vieraana. Ne tunkeutuvat päälle, ja se, joka
tahtoisi olla välinpitämätön ja vieras, tulee siten häirityksi, ja se
synnyttää hänessä helposti välinpitämättömyyden sijasta
vastenmielisyyttä. Jos semmoinen olosuhde syntyisi, että yliopiston
opettajat tulisivat vieraiksi oppilailleen, vieraiksi kansakunnan
elämälle, jopa tuntisivat vastenmielisyyttä sitä kohtaan, niin
muuttuisi maan ja yliopiston väli toisenlaiseksi kuin ennen. Yliopisto
on ollut kansakunnan helmalapsi, mutta niin ei olisi enää laita. Siitä
syystä on mielestäni se menettely, että yliopisto hankkii itselleen
opettajia ulkomailta, mitä vähimmin onnellinen, ja sentähden olen
myöskin sitä mieltä, että jos anotaan jotakin yliopiston
opettajavoimien lisäämiseksi, niin on anomuksessa julkilausuttava se
toivomus, että kotimaisilla miehillä, milloin he ovat taitavia ja
päteviä, aina tulisi olla etusija ulkomaalaisiin verraten, mutta että
kuitenkin ulkomaalaiselle vast'edeskin niinkuin tähän asti on
myönnettävä oikeus kilpailla, joskin sillä ehdolla, että hän osoittaa
semmoista harrastusta ja rakkautta sitä maata kohtaan, johon hän
tahtoo vaihtaa oman isänmaansa, että hän oppii maan molemmat
kielet ja osoittamalla taitavansa nämä kielet todistaa kykenevänsä
menestyksellisesti hoitamaan tulevaa opettajatehtäväänsä. En tiedä
minkälaisen yliopistonopettajan ihanteen Suomen kansa on luonut
itselleen, mutta kun muistamme, että Suomen kansa on pystyttänyt
muistopatsaan yhdelle ainoalle yliopistonopettajalle, niin luulen
kuitenkin ymmärtäväni, että tämä muistopatsas Auran rannalla
ilmaisee, että yliopistonopettajan ihanne Suomen kansan mielen
mukaan ei ole suuri yleismaailmallinen tiedemies, vaan isänmaallinen
tiedemies (den patriotiske vetenskapsmannen)."

Yliopiston konsistorin menettely siinä nimitysasiassa, johon


Kihlman viittaa, oli kansallisissa piireissä herättänyt melkoista
tyytymättömyyttä ja katkeruutta. Tyytymättömyyden, mutta ei
katkeruutta, tahtoi puhuja julkilausua ja hän teki sen tavalla, jota ei
voi ajatella maltillisemmaksi, vaikka toiselta puolen ei mitään
puuttunut niistä perusteista, joihin tyytymättömyyden oikeutus
nojasi.

Valtiopäivien kulissien takana tapahtui nyt niinkuin ainakin paljon


semmoista, josta painetut asiakirjat eivät tiedä mitään. Ainoastaan
sattumalta on toisesta tai toisesta seikasta muisto säilynyt jossakin
samanaikaisessa yksityisessä kirjeessä. Siten saamme seuraavasta
kirjeotteesta (Ekströmille 3/4) tietoa eräästä ehdotuksesta, joka
herätettyään hetkellisen hälinän raukesi tyhjiin, mutta joka silti aikaa
kuvaavana ansainnee huomiota. Ekström oli ennen maininnut jotain
asiasta, ja siihen Kihlman vastaa: "Toivoakseni ei se asia kuitenkaan
enää kiinnitä edustajien mieltä. Se sukelsi odottamatta esiin ja
aiheutti äkillisen, mutta pian ohi menevän levottomuuden. Tarkoitus,
jos tarkoituksesta saa puhua, ei ollut niinkään huono. Tiedettiinhän,
että perintöruhtinas kesäaikoina mielellään oli käynyt
saaristossamme, jopa sanottiin hänen tiedustelleen erään
Suomenlahden rannalla sijaitsevan maatilan hintaa. Nyt ajateltiin: jos
tuleva Suuriruhtinaamme viettäisi muutamia viikkoja vuodesta
Suomessa, niin oppisi hän tuntemaan ja rakastamaan maatamme ja
kansaamme. Mitä parempaa voisimme toivoa kuin että Ruhtinaamme
pitäisi meistä? Jotta hänellä olisi tilaisuutta oleskella keskellämme,
voitaisiinhan tarjota hänelle pieni maatila. Niin esitettiin asia minulle.
Sanoman mukaan oli aate (senaattori) Molanderin. Ainakin hän pani
kysymyksen vireille. Kenties hän oli kuitenkin välikappale. Ken tietää?
Mutta jos Molander oli aatteen keksijä, niin ei onnenonginta liene
johtanut häntä, sillä hän on tunnettu kunnon mieheksi. Suunnitelma
ei onnistunut, ja minun mielestäni oli hyvä, että niin tapahtui, vaikka
olisi ollut onnellisempaa, jollei sitä olisi edes puheeksi otettu. Heti
näyttäytyi, että asia oli vaikea toimeenpanna. Kuka saattoi sanoa,
minkälainen tila olisi lahjansaajan mieleen? Jos tila olisi
vähäpätöinen, saattaisi asia tulla naurettavaksi. Suurta maatilaa ei
taas voitu ajatella. Miten käsittäisi Keisari sen, että jo alettiin kääntää
katse nousevaa päivää kohti? Ja eikö olisi mahdollista, että lahja
saattaisi vaivata (blifva generande) vastaanottajaa? Hän kenties
ajattelisi: nyt annetaan, mutta luultavasti vaaditaan minulta jotain
sopivalla hetkellä. Ja jos hän tekisi jotain Suomen hyväksi, eikö
silloin voitaisi Venäjällä sanoa: kyllä sen ymmärtää, miksi hän
muistaa Suomea j.n.e. j.n.e. Lyhyesti: heti ilmaantui vaikeuksia, joita
ei voitu selvittää. Oltiin joutumassa uralle, jolle ei mikään velvollisuus
käskenyt lähtemään. — Kun asia meni myttyyn, toivon sen menneen
iäksi. En minä ainakaan ole pitkään aikaan kuullut kenenkään
puhuvan koko asiasta." — —

Samassa kirjeessä Kihlman julkilausuu ensi kerran mielensä tämän


säätykokouksen tärkeimmästä kysymyksestä, asevelvollisuudesta.
Vielä hän ei ole päättänyt, mille kannalle hänen oli asettuminen,
mutta me huomaamme, kuinka asia koski häneen, ja ymmärrämme,
kuinka vakavasti hän sitä mietiskeli, kunnes hänen syyskaudella tuli
lopullisesti määrätä asemansa. "Uudet asiat tunkevat lakkaamatta
päälle", Kihlman kirjoittaa, "eikä ehditä ajatella mennyttä. Nyt ovat
mielet täynnä asevelvollisuusasiaa. Näyttää siltä kuin tulisi tämä n.s.
'velvollisuus' synnyttämään paljon epäilyksiä. Eihän ole kiellettävissä,
että kansa on velvollinen puolustamaan itseänsä vihollisten
hyökkäyksiä vastaan. Mutta ei siitä seuraa, että kaikkien tulee sitä
tehdä taikka että puolustajat ovat arvalla määrättävät, s.o.
sotaväenotolla (konscription). Semmoinen järjestys aiheuttaa
epäilemättä velvollisuuksien ristiriitaa. Minä kuulun, niinkuin näet,
epäilijöihin. — Surullinen tosiasia on tämä asevelvollisuus, jonka
kaikki Euroopan kansat nykyään hyväksyvät todellisena
velvollisuutena. Ei koskaan, ei edes suuren Napoleonin aikana
Euroopan kansat olleet niin varustettuja sotaan kuin ne nykyään ovat
taikka ovat tulemassa. Kristinuskon periaatteen, että jokaisessa
ihmisessä kansallisuudesta huolimatta tulee nähdä veljensä, työntää
tositeossa toinen periaate syrjään, että näet jokaisessa vieraassa
kansakunnassa on nähtävä vihollinen. Humaniteetin periaate, että
kaikki riidat järkevien olentojen kesken ovat järkevällä tavalla
ratkaistavat, s.o. siten että puolueettomuutta, tietoa ja oikeutta
edustavat viranomaiset (auktoriteter) tutkivat asioita ja lausuvat
niistä tuomionsa, tämä periaate syrjäytetään lapsellisena
harhakuvana, ja sen sijaan esitetään ainoana käytännöllisenä
keinona, että riita ratkaistaan voiman s.o. nyrkkioikeuden avulla.
Tämä on siis ihmiskunnan kehityksen tulos: epätoivo totuudesta ja
oikeudesta, epäluottamus kansojen kesken, yleinen
varustautuminen, joka helposti vie sotaan ja joka, jollei sotaa
synnykään, kumminkin maksaa hän äärettömästi, että ainoastaan
vähän jää jäljelle humaniteetin kehitystä varten. Ja kaiken tämän
kurjuuden yli heitetään sitten siveellinen leima (sken), velvollisuuden
leima."

"Auta minua nyt, rakas veli, jälleen uskomaan ihmisyyteen, joka


minun mielestäni tuntuu joutuneen pahan vallan omaksi (hemfallen
åt en ond makt)!" — —

Vielä mainittakoon kevätkaudelta Kihlmanin esiintyminen


naissivistysasiassa(20/4). Keskustelussa, jonka aiheutti yleisen
valitusvaliokunnan hylkäävä mietintö ritaristossa ja aatelissa
esitetystä anomusehdotuksesta, että komitea asetettaisiin laatimaan
ehdotusta naissivistyksen kohottamiseksi, oli Kihlman niiden
joukossa, jotka vastustivat mietintöä. Voimakkaammin kuin kukaan
muu hän huomautti siitä ristiriidasta, joka ilmeni hallituksen
menettelyssä, kun se näet koululaissa myönsi naisillekin oikeuden
saada miesopettajille tarkoitettuja kolleganvirkoja tyttökouluissa,
mutta samalla kielsi heiltä oppikoulujen ja yliopiston ovet. "Eikö tämä
ole ilmeinen ja huutava vääryys, vääryys niin suuri, ettei sen
poistamista ole lykättävä, vaan siihen mitä pikemmin sitä parempi
käytävä käsiksi?"

*****

Huhtikuulla syttyi sota Venäjän ja Turkin välillä. Se ei estänyt


valtiopäivien työtä jatkumasta toukokuun viimeiseen päivään, josta
kesäloma alkoi; mutta tietysti verinen temmellys järkytti Suomenkin
elämää. Ennen on jo mainittu, että Tampereen yhtiön tulos v:lta
1876 oli huono. Sodan johdosta ruplan kurssi aleni alenemistaan, ja
samassa määrässä kävi asema tukalammaksi. "Liike on ylläpidettävä
kotimaisella myynnillä, joka siihen nähden on riittämätön", kirjoittaa
(21/6) Kihlman Ekströmille. "Ei ole hauskaa olla johdossa tällaisten
olojen vallitessa. Mutta eihän eletä nauttiakseen aina menestystä."

Kesäksi oli Kihlman vuokrannut omaisilleen asunnon Sääksmäen


Hakalassa, ja perhe oli muuttanut sinne jo 12 p:nä kesäk. Itse hän
pääsi lähtemään vasta juhannuksen aikana. Rulluddissa asuivat
Viktor ja Hanna Heikel lapsineen, jotka nyt olivat muuttaneet
Helsinkiin. Kesänvietosta Sääksmäellä ei ole erikoisempaa
kerrottavana. Kihlman kävi säännöllisesti kerran viikossa Helsingissä
(tai joskus Tampereella) kulkien soutuveneellä Sääksmäen selän yli
Kuurilan asemalle. Seuraa saatiin Otto Donnerista ja hänen
perheestään. Donner oli näet kesäksi asettunut Rapolaan, eikä C. G.
von Essenkään ollut kaukana. Jälkimmäinen oli näet, tultuaan
täysinpalvelleeksi 1875 ja sen jälkeen vielä hoidettuaan
professorinvirkaa yhden vuoden, keväällä 1876 muuttanut
ostamalleen Herniäisten maatilalle Hattulaan. Kummankin asunnon
ohitse kulkevan höyrylaivan ansiota oli, että "appi-isä" ja "vävy"
saattoivat mukavasti käydä toistensa luona. Vihdoin mainittakoon,
että prof. C. G. Estlanderkin perheineen asui tänä kesänä
Sääksmäellä (Ikkalassa). Joskus seurusteltiin näidenkin kanssa,
vaikkei se Helsingissä tullut kysymykseen. Kesä oli kylmänlainen, ja
se sai Kihlmanin pelkäämään, että kovat ajat olivat tulossa.

Elokuun lopulla palattiin Helsinkiin. Tuskin viikko sen jälkeen sattui


kuolemantapaus, joka erittäin läheltä koski Kihlmania ja josta hän
samana päivänä, syyskuun 5:nä, kirjoitti Essenille:
"En tiedä, onko Appi-isä jo toista tietä saanut ilmoituksen tänään
sattuneesta surullisesta tapauksesta, ja riennän sentähden
kertomaan siitä. Hyvä, rehellinen ystävämme Antero (Ingman) on
päättänyt maallisen toimintansa. Se tapahtui tänään noin k:lo 1 p:llä.
Antero, joka oli voinut pahoin kotimatkallaan Ruovedeltä, oli täällä
toipunut ja oli täydessä toimessa. Varsinkin eilen hän oli tuntenut
itsensä erittäin terveeksi, hänellä oli ollut oivallinen ruokahalu, ja
illalla hän oli laskenut leikkiä omaistensa kanssa sekä yöllä nukkunut
hyvin. Tänään hän teki työtä tavalliseen tapaan. Aamupäivällä oli
(heille) ollut kutsuttuna vanha Wegeliuksen herrasväki, rovastinrouva
Ottilia (Stenbäck) ja Lydia Wegelius (s. Bergroth). Antero seurusteli
vieraiden kanssa, luki julki tekstin (kymmenestä pitalisesta miehestä)
ja alkoi puhua siitä. Äkkiä hän keskeyttää sanoen: 'koskee niin
kipeästi sydämeeni', nostaa ylös kätensä, vaalenee ja — kuolee. Heti
lähetetään hakemaan lääkärejä, jotka tulevatkin neljänneksen
kuluessa. Mutta tutkittuaan hänen tilaansa, avattuaan suonta y.m.
selittävät he, että kaikki oli lopussa. N.s. sydämenhalvaus oli
silmänräpäyksessä tehnyt lopun hänen elämästään. — Kas siinä
ulkonainen puoli tapahtumaa, josta Lydia iltapäivällä kertoi minulle.
— Olen Hildan kanssa käynyt vainajan kodissa ja nähnyt Anteron
kalpeat kasvot. Hän makaa sohvallaan työhuoneessaan. Yliopiston
avajaissaarnan oli Antero jo kirjoittanut valmiiksi: Uskosta ja hyvästä
omastatunnosta. — Antero jättää jälkeensä tiedekuntaan tyhjän
paikan, joka ei ole helposti täytettävissä. Niin hurskas teologi on
harvinainen! Ja semmoinen suomalainen ja semmoinen ystävä! —
Niin harvenee harvenemistaan pieni ystäväpiirimme!" —

Ingmanin kuolema merkitsi paljon Kihlmanille. Vaikk'emme ole


voineet mitään kertoa heidän seurustelustaan Helsingin aikana,
tiedämme kuitenkin, että heitä yhdisti mitä lämpimin, mitä
vilpittömin ystävyys. Se juontui nuoruuden ajoilta, oli vakaantunut
samanlaatuisten kokemusten koulussa ja lopulta saanut
järkkymättömän perustan uskonnollisen vakaumuksen
yksimielisyydessä. Sinä päivänä, jona Kihlman täytti 50 vuotta,
sanotaan hänen pitäneen tavattoman sydämellisen puheen
Ingmanille.

Hautajaiset olivat syyskuun 9 p:nä. Gustaf Johansson toimitti


ruumiinsiunauksen, ja Kihlman piti haudalla puheen. Hän huomautti,
että vainaja köyhyyden ankarassa koulussa varhain oli kokenut
elämän koko vakavuutta ja siitä saanut sen vakavuuden piirteen,
joka oli hänelle ominainen. Ylioppilaana ensin antauduttuaan
filologisiin (erittäin myöskin suomenkielen) ja filosofisiin tutkimuksiin
hän lopulta kuitenkin sydämen rauhaa saadakseen kääntyi uskonnon
alalle ja tuli papiksi. Kirkon palvelijana hän sai aikaa palata
kieliopintoihinsa ja hänelle uskottiin suomalaisen
raamatunkäännöksen korjaustyö. Tämä "korjaustyö tuli hänelle
hänen oman uskonsa korjaukseksi. Välttämättömyys tyystin tarkata
alkutekstiä palautti hänet siihen aikaan, jolloin Jumala puhui pyhien
miestensä kautta. Tutkiessaan tekstiä oli kuin hän jälleen olisi kuullut
Jumalan välittömästi puhuvan. Järkytettynä Jumalan läheisyyden
tunnosta hän kuunteli tätä puhetta ja paljon todellisen
ennakkoluulon kuonaa putosi hänen sielustaan. Hänen puhtaimmaksi
ilokseen tuli nyt suomenkielestä tavata jumalallisten ajatusten oikeat
ilmaisumuodot". Sittemmin tultuansa eksegetiikan professoriksi hän
eli yksinomaisesti kutsumustaan varten työllään ja rakkaudellaan
vaikuttaen oppilaisiinsa, joiden kautta hän kuolemansakin jälkeen
"puhuu Jumalan sanaa Suomen kansalle". Vainajan uskollisuuden
palkka oli, että hän sanaa selittäessään tauditta ja tuskitta muutettiin
siihen parempaan maailmaan, johon hän nuoruudestaan asti oli
ikävöinyt ja toivonut. "Semmoinen usko kuin vainajan näyttäytyy
välttämättömästi kaikissa elämänsuhteissa. Vainajan lämmin
isänmaanrakkaus, hänen hellyytensä perheenisänä, hänen uskollinen
ystävyytensä, hänen ihmisystävällinen mielenlaatunsa ja
avuliaisuutensa, joka tuskin tiesi rajoja, kaikki oli yhteydessä hänen
vilpittömän lapsenuskonsa kanssa. Mutta se usko, jolla hän on
kuunnellut Jumalan puhetta ja jolla hän sitten on puhunut Jumalan
sanaa Suomen kansalle, tämä usko se on, joka tekee hänet, A. W.
Ingmanin, yhdeksi Suomen muistettavia miehiä." [Tidskrift för
Teologi och kyrka 1877, s. 411.]. —

Käytännöllisenä miehenä Kihlman myöskin osoitti ystävyyttään


auttamalla vainajan omaisia pesän valmistamisessa selvitystä varten.
Aluksi pelättiin, että tulos näyttäytyisi hyvinkin huonoksi, Ingman
kun rajattomassa hyväntahtoisuudessaan oli ollut liian valmis
menemään takaukseen teologian ylioppilaiden y.m. nuorten tuttavien
lainoista. Mutta vähitellen huomattiin, ettei ollutkaan hätää. Tappio
nousee "korkeintaan noin 5,000 mk:aan", kirjoittaa Kihlman (23/9)
Essenille. "Kun kaikki otetaan lukuun, on Ingman ollut oikea
malliekonoomi(!) Ainakin täytyy minun tunnustaa, että olisin iloinen,
jos voisin selvittää asiani 5,000 mk:n tappiolla. Se seikka, että
Anteron liiketoiminta tavallisesti rajoittui kolmenumeroisiin lukuihin,
Vaikuttaa suuresti kokonaisuuteen. Jos montakin tappiota
ilmaantuisi, ei loppusumma kuitenkaan tule melkoiseksi." — Saman
kirjeen lopussa Kihlman lausuu omasta puolestaan: "Olen pannut
paljon aikaa omienkin asioiden selvittämiseen ja taloni
järjestämiseen ollakseni valmis, kun hetki tulee. Mutta valitettavasti
tehtävä ei ole äkkiä suoritettu. Siihen menee aikaa. Samoin myös
kun on selvitettävä suhde velkojaan tuolla ylhäällä. Kunpa se tili
kerran tulisi selväksi! Se on se suuri voitto- ja tappiotili, johon kaikki
tilit yhtyvät! — Minä olen kituillut rinnastani." —
Muutkin kirjeet tältä ajalta todistavat, että Kihlman oli sekä
ruumiillisesti että sielullisesti masennuksissa. Pohjois-Suomessa oli
kato melkein yleinen, eikä vuodentulo etelämpänäkään ollut
kiitettävä. Sen johdosta olivat pankit jo alkaneet vähentää luottoaan.
Toiselta puolen sodan pitkittyminen sai odottamaan pahaa ja
pahempaa. Valtiopäivien tähden hän oli rajoittanut virkatoimensa
mahdollisimman vähäiseen: hän opetti uskontoa ainoastaan
VII:nnen luokan molemmilla osastoilla sekä hoiti, mikäli aika myönsi,
yliopettajan erikoistehtäviä. Rintaansa varten hän joi Emsin-vettä.
Kun säätykokous jälleen oli ryhtynyt työhönsä, hän kirjoittaa (5/10)
Essenille: "Aika on kaikin tavoin ankara. Olen paljon kärsinyt näinä
päivinä, jopa niin että ruumiini ei ole jaksanut pysyä pystyssä. Eilen
ja tänään olen kuitenkin ollut reippaampi. Ei ole vielä onnettomuutta
tapahtunut, mutta en voi olla olematta levoton tulevaisuuteen
nähden. Venäläinen voima on osoittautunut voimattomuudeksi.
Järjestelmä kantaa hedelmänsä. Korkeammille paikoille on asetettu
henkilöitä, jotka eivät ole arvoasteita suorittaneita, vaan sukulaisten
y.m. suosittelemia. Korkeammalta virkamieheltä ei ole ensi kädessä
vaadittu tietoja ja taitoa, vaan guvernementale Gesinnung s.o.
ennen kaikkea vallitsevan järjestelmän hyväksymistä. Jonkun ajan se
käy päinsä, mutta esim. sodassa se ei kauan kelpaa. Niillä
vastoinkäymisillä, jotka Venäjä tänä kesänä on kärsinyt, täytyy olla
syynsä, eikä se voi olla mikään muu, kuin sotaväkeä koskevien asiain
huono johto sodan aikana ja sitä ennen. 'Ei pidä kuulla pedogogeja
pedagogisissa kysymyksissä' — on periaate, joka välttämättömästä
vie perikatoon niin Venäjällä kuin Suomessa ja kaikkialla. — Kuinka
kauan Venäjä jaksaa jatkaa sotaa, on mahdotonta ennustaa.
Luultavasti jaksaa se kauankin, koska Turkkikin jaksaa. Mutta
paholainen mahtaa riemuita katsellessaan tätä sotanäyttämöä.
Ihmisten tapa kohdella toisiaan on varmaan hänen mieleensä.
Jumala armahtakoon maapalloraukkaamme ja valistakoon meitä!
Mutta emmehän me tahdo tulla valistetuiksi!" — —

*****

Valtiopäivien loppukausi vaati nyt niinkuin ainakin voimia ja


kestävyyttä. Onneksi Kihlman toipui niin, että hän yhtä mittaa jaksoi
olla mukana ja ottaa osaa loppumattomiin keskusteluihin.

Erinäisistä asioista huomattakoon ensiksi kysymys suomenkielisistä


kouluista, jonka polttavuutta se tosiasia todistaa, että
kolmattakymmentä anomusehdotusta sellaisista kouluista oli tehty.
Anomusehdotukset lähetettiin Yleiseen valitusvaliokuntaan, ja
varamiehenä tuli Kihlmankin osalliseksi niiden käsittelyyn.
Valiokunnan enemmistö oli kyllä myöntyväinen puoltamaan
suomalaisten koulujen perustamista, mutta vaati samalla, että
kouluissa vast'edes oli toista kotimaista kieltä niin "täydellisesti"
opetettava, että oppilaat voisivat "esteettömästi" käyttää sitä sekä
puheessa että kirjallisesti, ja oli päämäärän saavuttamiseksi m.m.
lyseoiden viidenneltä luokalta alkaen yhdessä tai useammassa
aineessa pakollisesti opetusta annettava toisella kotimaisella kielellä.
Kasvatusopilliselta kannalta Kihlman ehdottomasti vastusti näitä
vaatimuksia sekä valiokunnan keskusteluissa ja mietintöön
liittämässään perusteellisessa vastalauseessa, johon A. Meurman ja
muut valiokunnan suomenkieliset jäsenet yhtyivät, että oman
säätynsä pitkässä keskustelussa samasta kysymyksestä. Näin
menetellen hän ei suinkaan vastustanut toisen kotimaisen kielen
opetuksen parantamista, hän tahtoi vain, ettei koululta vaadittaisi
liikaa. 'Täydellisen' tiedon ja taidon antaminen jossakin kielessä tai
aineessa hänestä oli enemmän kuin koululta oli oikeutta pyytää;
mutta silti oli kyllä tarpeen, että toiselle kotimaiselle kielelle
määrättäisiin enemmän tunteja, ja sopisi niitä parhaiten ottaa
venäjän kieleltä, jolla oli liian suuri tuntimäärä verrattuna kotimaisiin
kieliin ja jonka opetus voitaisiin aloittaa vasta 5:nneltä luokalta.
Säätyjen anomuksen ponsista näkyy, että Kihlman sikäli sai
mielipiteensä läpi, että vaatimukset täydellisestä toisen kotimaisen
kielen taidosta ja myöskin kaksikielisestä opetuksesta jätettiin pois,
jota vastoin hänen ehdotustaan venäjän kielen tuntimäärän
vähentämisestä ei katsottu sopivan mainittavaksi tässä yhteydessä.
— Kun pappissäädyssä keskusteltiin siitä, mihin kaupunkeihin
suomenkielisiä kouluja oli perustettava, tahtoi Kihlman, että samalla
mainittaisiin, mitkä ruotsalaiset koulut ehkä voitaisiin lakkauttaa.
Tapansa mukaan katsellen asioita käytännöllisesti hän näet piti
mahdottomana, että kaikki kyseessä olevat koulut voitaisiin
perustaa, jolleivät ruotsalaisten koulujen kustannukset vähentyisi.
Sitä paitsi ei ollut kelvollisia opettajiakaan tarpeeksi, ja "yksi hyvä
oppilaitos, missä oli kelpo opettajia, oli parempi kuin kaksi, joissa oli
ala-arvoisia opettajia". Virkamiehille y.m. yksityisille hän ei
myöntänyt oikeutta vaatia lapsilleen kouluopetusta toisella kielellä
kuin paikkakunnan yleisellä. Anomuksen ponsissa ei kuitenkaan
sanottu mitään ruotsalaisista kouluista.

Edelleen ansaitsee huomiotamme Kihlmanin esiintyminen


eriuskolaislaki-kysymyksessä, joka hallituksen esityksen johdosta tuli
käsittelyn alaiseksi. Lakivaliokunta oli erinäisillä muutoksilla
hyväksynyt esityksen, mutta pappissäädyssä se kohtasi vastustusta.
Kun noin kahdestatoista puhujasta useimmat olivat puhuneet
esitystä vastaan, pyysi Kihlman sananvuoroa puolustaakseen sitä.
Hänestä oli uskonnonvapaus kaikkialla tarpeen, ja kun se oli
meilläkin tunnustettu kirkkolain 6 §:ssä, oli eriuskolaislain
säätäminen välttämätön seuraus siitä. Oli sanottu, että laki oli
tarpeeton, koska ainoastaan joku kymmenkunta tai satakunta
ihmistä kaipasi sitä. "Mutta ovatko muutaman sadan ihmisen
omantunnonasiat", lausuu Kihlman, "taikka ovatko muutaman
kymmenen ihmisen omantunnonasiat taikka edes yhden ainoan
ihmisen omantunnonasiat jotakin, jonka saamme laiminlyödä, me
jotka korkeimpana opettajanamme pidämme häntä, joka opetti
meille, että yksi ainoa ihmissielu on koko maailman aarteita kalliimpi.
Jos pidämme ihmisen arvoa niin juurena, silloin emme suinkaan saa
katsoa muutamien kymmenien tai satojen ihmisten uskonnollisia
asioita niin vähäpätöisiksi, ettei meidän tarvitse välittää niistä.
Vaikuttavatko ainoastaan suuret joukot pappissäätyynkin, tähän
säätyyn, joka edustaa näkymätöntä, jonka tulee puhua
näkymättömien etujen puolesta, jonka tehtävänä on osoittaa niitä
näkymättömiä aarteita, jotka ovat olemassa, vaikka ne meiltä
maailman hyörinässä niin helposti unohtuvat? On sanottu, että tämä
laki olisi sekä tarpeeton että myöskin riittämätön, koska meillä on
liian vähän kokemusta säätääksemme semmoista lakia. Mutta niin
kai lienee kaiken lainsäätämisemme laita. Se on niinkuin kaikki
ihmistyö epätäydellistä, ja jollei meidän tulisi säätää muita lakeja
kuin sellaisia, joita ei enää tarvitsisi parantaa, silloinhan vaadittaisiin
meiltä enemmän kuin ihmiselle on mahdollista. Ajattelen, että kaikki
lakimme ovat vast'edes muutettavat, ja niin tämä eriuskolaislakikin,
mutta onhan yksikin askel uralla jo jotain. Mutta muutamista
puhujista ei tämä laki ole ainoastaan tarpeeton ja riittämätön, vaan
myöskin vahingollinen, koska se muka houkuttelisi ihmisiä eroamaan
evankelis-luterilaisesta kirkosta. Iloitaan siitä yhteydestä, joka tähän
asti on maassamme vallinnut uskonnollisessa suhteessa, ja pelätään,
että yhteys on häviävä eriuskolaislain vaikutuksesta, mutta tässäkin
tulee huomata, mikä ero on olemassa näkyvän ja näkymättömän
välillä. Näyttää kyllä siltä kuin yhteys olisi olemassa, mutta jos
tunkee syvemmälle ihmisiin, niin huomaa, että maamme ei ole
mikään poikkeusmaa, vaan että näennäisen yhteyden alla todellisesti
on sangen suurta eroavaisuutta käsityksissä, ja missä niin ei ole
laita, on yhteyttä sen vuoksi, ettei mitään ajatella asiasta. Uskotaan
mitä kirkko uskoo, olematta kuitenkaan selvillä siitä, mitä kirkko
uskoo. Jopa on eräs puhuja mennyt niin pitkälle, että hän arvelee
eriuskolaislain sallivan ihmisten elää kurittomasti. Se on katsella
asiaa liian pimeästi. Määräähän laki itse, että eriuskolaisten,
ennenkuin saavat perustaa oman seurakunnan, tulee tehdä selkoa
järjestyksestään, ja että hallitus ei saa hyväksyä mitään
seurakuntaa, jolla ei ole järjestyssääntöjä ja toimihenkilöä, joka
valvoo sen noudattamista. Ne syyt, jotka täällä tänä päivänä on
esitetty eriuskolaislakia vastaan, ovat minusta semmoisia, joita aina
voidaan esittää milloin vain kysymys siitä herätetään. Kumminkin
pitäisi luterilaisessa kirkossa lain, joka on uskonnonvapauden
ilmaisu, voida saada kannatusta, koska todellisesti luterilainen kirkko
itsekin on separatistikirkko, kirkko, joka on eronnut yleisesti
vallitsevasta katolisesta kirkosta, ilman muuta oikeutusta kuin
raamatun sanaan nojaava vakaumus. Niin, kristinusko itse — onhan
sekin uskonto, joka syntyi aikaan, jolloin vallitseva uskonto s.o.
juutalainen uskonto saattoi uutta uskontoa vastaan väittää, että sen
tunnustajat olivat niin harvalukuiset ja niin vähäarvoiset maassa,
ettei voinut eikä tullut heistä välittää." — —

Kun sittemmin yksityiskohtaisesti tarkastettaessa tultiin


säädökseen, että avioliitto evankelis-luterilaisen kirkon jäsenen ja
eriuskolaisseurakuntaan kuuluvan välillä oli vahvistettava kirkollisella
vihkimisellä, oli Kihlman sitä mieltä, että sellaisissa tapauksissa avion
solmiminen yhteiskunnallistenkin viranomaisten edessä olisi
sallittava, joten ei eriuskolaista pakotettaisi alistumaan hänelle
vieraan kirkon menoihin. Tähän vapaamieliseen käsitykseen ei
kuitenkaan kukaan yhtynyt. — Tarkastuksen jälkeen äänestettiin
lakiehdotuksesta kokonaisenaan, ja hylättiin se 16 äänellä 15:ttä
vastaan.

Vasta 10 p:nä jouluk. alkoi asevelvollisuuskysymyksen käsittely


pappissäädyssä, ja oli ensi päivän keskustelu pääasiassa
periaatteellista laatua. Päinvastoin kuin olisi voinut odottaa Kihlman
ei ottanut osaa siihen. Ainoa, joka kristilliseltä kannalta
periaatteellisesti vastusti asevelvollisuutta, oli Kihlmanin entinen
asuintoveri Turussa, pastori K. F. Öller. Mihin käsitykseen Kihlman oli
tullut, se saatiin kuulla, kun oli alettu yksityiskohtaisesti tarkastaa
lakiehdotusta. Tärkeimmät lausuntonsa esitti hän 4 §:n johdosta,
jossa säädettiin, että arvalla oli määrättävä, kuka oli tuleva
vakinaiseen sotaväkeen, kuka reserviin. Jo ensimmäisestä
lausunnosta näkee, miksi hän ei periaatteellisesti vastustanut
asevelvollisuutta. "Minä myönnän hätäpuolustuksen (nödvärn)
oikeudeksi ja velvollisuudeksi. Minä katson olevani sekä oikeutettu
että velvollinen jopa tappamaan henkilön, joka hyökkää minun ja
omaisteni kimppuun, tunkee huoneeseeni tehdäkseen väkivaltaa
minulle ja omaisteni pyhimmille oikeuksille, jos nimittäin tämä ei
tapahdu kristillisen vakaumukseni tähden — sillä semmoisissa
tapauksissa kristinuskon perustaja käskee kärsimään ja kestämään,
jos näet joku tekee väkivaltaa jollekin ihmiselle Kristuksen tähden ja
syystä että hän tunnustaa kristityn nimeä. Mutta samoin kuin
yksityinen on sekä oikeutettu että velvollinen jopa käyttämään
väkivaltaa ja tappamaankin puolustaakseen itseään ja omaistensa
henkeä, kunniaa ja hyvettä (dygd), samoin on valtiokin sekä
oikeutettu että velvollinen puolustamaan ja varjelemaan itseään
väkivaltaa vastaan, kun se tulee toisen valtion puolelta, ja jos kerran
myönnetään, että valtio on sekä oikeutettu että velvollinen
panemaan väkivallan väkivaltaa vastaan, niin ei pitäisi kenelläkään
olla syytä — omantunnon nimessä vastustaa asevelvollisuutta.
Welcome to our website – the perfect destination for book lovers and
knowledge seekers. We believe that every book holds a new world,
offering opportunities for learning, discovery, and personal growth.
That’s why we are dedicated to bringing you a diverse collection of
books, ranging from classic literature and specialized publications to
self-development guides and children's books.

More than just a book-buying platform, we strive to be a bridge


connecting you with timeless cultural and intellectual values. With an
elegant, user-friendly interface and a smart search system, you can
quickly find the books that best suit your interests. Additionally,
our special promotions and home delivery services help you save time
and fully enjoy the joy of reading.

Join us on a journey of knowledge exploration, passion nurturing, and


personal growth every day!

ebookmasss.com

You might also like