目次
在 HTML 中使用JavaScript
SCRIPT 标记
定义和调用函数
HEAD标记
引号
编写事件处理程序脚本(Scripting Event Handlers)
技巧与技术
更新页(Updating Pages)
打印
使用引号
定义函数
创建数组
操作数组(Populating an Array)
ホームページ ウェブフロントエンド jsチュートリアル javascript学习随笔(编写浏览器脚本 Navigator Scripting )_javascript技巧

javascript学习随笔(编写浏览器脚本 Navigator Scripting )_javascript技巧

May 16, 2016 pm 07:17 PM

在 HTML 中使用JavaScript

JavaScript能以两种方式嵌入HTML:

  • 作为语句和函数使用时,用 SCRIPT 标记
  • 作为事件处理程序使用时,用 HTML 标记

SCRIPT 标记

使用SCRIPT标记把脚本嵌入在HTML中,格式如舷:

<script> <BR>_ JavaScript 语句<BR></script>

LANGUAGE属性作为可选项,用于指定脚本语言,用法如下:



是<script>的结束标志,之间可以包括任意多的JavaScript语句.</script>

JavaScript是区分大小写档



例1 一个简单的脚本






That's all, folks.



例1中的页面显示:

Hello net.That's all folks.

 


 


代码隐匿

在不识别JavaScript的旧版本浏览器上,可以把脚本放置在注释域中,这样JavaScript代码就不会被显示出来. 把整个脚本用HTML的注释标记括起来:

定义和调用函数

在页(page)被装载后,被置于SCRIPT标记之间的脚本被分析.函数被存贮起来,但并未执行. 函数由页内的事件调用执行.

正确理解定义函数与调用函数之间的区别是很重要的,定义函数仅仅是命名了这个函数和说明当此函数被调用时做什么,而调用函数才利用传来的参数真正执行指定的动作.


 

例2 一个带有函数和注释的脚本







All done.


例2中的页面显示:

We passed 5 to the function.
The function returned 25.
All done.


 

HEAD标记

通常,应该在文档的HEAD部分定义页(page)的所有函数,因为HEAD被首先装载,这就保证了用户做任何可能调用函数的动作前,函数已全部装载.


 

例3 有两个函数的脚本.


<script><BR><!--- hide script from old browsers <BR>function bar() {<BR> document.write("<HR ALIGN='LEFT' WIDTH=25%>")<BR>}<BR>function output(head,level,string) {<BR> document.write("<H" + level + ">" + head + "" + level + "><p>" + string)<BR>}<BR>// end hiding from old browsers --><BR></script>



<script><BR><!--- hide script from old browers<BR>document.write (bar(),output("Make Me Big",3,"Make me ordinary."))<BR>// end hiding from old browsers --><BR></script>


Thanks.

例3的结果:

Make Me Big
Make me ordinary.undefinedundefined
Thanks.


 

引号

用单引号(')把字符串常量括起来,用双引号把属性的值括起来,这样脚本能够把二者区分开. 在上个例子中, 函数bar中,常量left被放在属性值.再举一个例子:


 

编写事件处理程序脚本(Scripting Event Handlers)

Navigator上的JavaScript应用程序大部分是事件驱动的,事件常常是用户动作的结果. 例如: 按动按钮是一个事件, 结果是把focus赋与一个form元素.Navigator能够识别一组特定的事件. 你可以定义event handlers脚本,这些脚本在事件发生时会被自动执行.

事件处理程序是作为HTML标记的属性放在文档中的,把要执行JavaScript代码赋给HTML标记. 语法如下:

其中, TAG是HTML的某一标记, eventHandler是事件处理程序的名称.

例如, 假定已创建了一个名为compute的JavaScript函数,你可以把对该函数的调用赋给这个按钮的onClick事件处理程序,从而实现当用户按此按钮时,Navigator执行函数compute.

你可以把任何JavaScript语句放在onClick后的引号内,多个语句之间用分号隔开.这些语句只在当用户按动此按钮时才被执行.

一般说来,把自己的事件处理程序定义成函数是一种好习惯,因为:

  • 这使你的代码模块化--- 同一个函数可以作为多个不同item的事件处理程序.
  • 这使你的代码容易读懂.

请注意,在此例中,使用this.form来引用当前form, 关键字this用来引用当前对象,此处即指button对象,于是this.form结构被用来引用包含此button的form. 上例中onClick事件处理程序是以this.form(当前form)为参数调用compute()函数.

能用于HTML标记中的事件如下:

  • Focus, Blur, Change事件: 文本域,文本区和选择
  • Click事件: 按钮,无线按钮,核对框,递交按钮,复位按钮,链接
  • Select事件: 文本域,文本区
  • MouseOver事件: 链接

如果一事件可用在HTML标记里, 则可以给它定义事件处理程序.通常事件处理程序的名称是以on开头,后跟事件名称. 如, Focus的处理程序名为onFocus.

许多对象有模拟事件的方法(method).如,button有一个名为click的方法能模拟按钮被按下. 注意: 模拟事件的方法不能触发事件处理程序.如方法click并不能触发事件处理程序onClick. 但是,你可以直接调用事件处理程序(如,在脚本中,显式调用onClick).

事件 何时发生 事件处理程序
blur 用户将input focus从form元素上移去 onBlur
click 用户在form元素或连接上接动鼠标 onClick
change 用户改变了文本,文本区或选择元素的值 onChange
focus 用户把input focus赋给form元素 onFocus
load 用户把页装入Navigato onLoad
mouseover 用户把鼠标光标从link或anchor上移过 onMouseOve
select 用户选择了form元素的输入域 onSelect
submit 用户提交了一个form onSubmit
unload 用户退出此页 onUnload



例4 有一个form和一个event handler属性的脚本

 







Enter an expression:




Result:






例4中的页面显示

Enter an expression:
Result:



例5 有一个form的脚本, event handler属性置于BODY标记中

 



var val=parseInt(str, 10)
if ((val max)) {
 alert("Try a number from 1 to 10.")
 return false
}
 return true
}

function thanks() {
 alert("Thank you for your input.")
}
// end hiding from old browsers -->





Enter a small number :
 onChange="if (!checkNum(this.valu,1,10))
 {this.focus();this.select; else thanks()}">



例5中的页面显示

Enter a number in the field and then click your mouse anywhere OUTSIDE of the field. Depending on what you enter,you will be prompted to enter another number,or thanked.

Enter a small number :


 

技巧与技术

本节介绍几种有用的编写脚本的技术

更新页(Updating Pages)

在Navigator上JavaScript是按从页的顶部到下的顺序生成结果. 一旦有些东西被重新设计(format),你只能靠重新装载此页的办法来改变,目前,你只能更新整 个页, 而不能只更新某一部分. 但是你可以单独更新frame中的"sub-window".

打印

目前, 还不能把用JavaScript产生的输出打印出来. 例如,若你的页上有如下内容,

This is some text
<script>document.write("<P>And some generated text")</script>

当打印时,你只会打出"This is some text", 即使你能在屏幕上看到两行.

使用引号

一定要区分双引号和单引号,因为在HTML中事件处理程序必须用双引号 括起来,参数用单引号,例如:


onClick="window.open('stmtsov.html', 'newWin','toolbar=no,directories=no')">


另外,你可以用前置反斜线(\)对引号进行转义.

定义函数

在HTML页的HEAD部分定义全部函数是一个好习惯.这样,在显示任何内容之前, 所有函数均已定义.否则在页还在装载时,用户可能做一些事情触发事件处理程序, 调用了未定义函数,将导致错误.

创建数组

数组是一个有序的值的集合,利用数组名和索引来引用.例如,一个名为emp的数组存放着雇员的名字,并按雇员编号索引.于是,emp[1]是1号雇员,emp[2]是2号雇员, 依次类推.

JavaScript中没有明确的数组数据类型,但由于数组与对象有类似之处(见 JavaScript Object Model),在JavaScript中,很容易创建数组.你可以定义一个 数组对象类型如下:

function MakeArray(n) {
 this.length=n;
 for (var i=1; i   this[i] = 0
  return this
 }
}

这样就定义了一个数组,第一个属性length表示数组中元素个数(索引为0),其余各属性初始值为0,索引为大于等于1的整数.

调用new时带上数组名和数组元素的个数,就创建了一个数组.

emp=new makeArray(20);

该语句创建了一个名为emp的数组,有20个元素,初始值为0.

操作数组(Populating an Array)

通过给数组元素赋值的办法来操作数组.如:

emp[1]="Casey Jones"
emp[2]="PHil Lesh"
emp[3]="August West"

等等.

还可以创建对象的数组.如,定义一个名为Employees的对象类型:

function Employee(empno,name,dept) {
 this.empo= empno;
 this.name= name;
 this.dept= dept;
}

下列语句则创建了一个此对象的数组:

emp=new MakeArray(3)
emp[1]=new Employee(1,"Casey Jones", "Engineering")
emp[2]=new Employee(2,"Phil Lesh", "Music")
emp[3]=new Employee(3,"August",""Admin)

这时,利用函数show_props(在JavaScript Object Model中定义)来显示该 数组中的对象, 如下:

for (var n=1; n document.write(show_props(emp[n],"emp")+"");
}

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

フロントエンドのサーマルペーパーレシートのために文字化けしたコード印刷に遭遇した場合はどうすればよいですか? フロントエンドのサーマルペーパーレシートのために文字化けしたコード印刷に遭遇した場合はどうすればよいですか? Apr 04, 2025 pm 02:42 PM

フロントエンドのサーマルペーパーチケット印刷のためのよくある質問とソリューションフロントエンド開発におけるチケット印刷は、一般的な要件です。しかし、多くの開発者が実装しています...

誰がより多くのPythonまたはJavaScriptを支払われますか? 誰がより多くのPythonまたはJavaScriptを支払われますか? Apr 04, 2025 am 12:09 AM

スキルや業界のニーズに応じて、PythonおよびJavaScript開発者には絶対的な給与はありません。 1. Pythonは、データサイエンスと機械学習でさらに支払われる場合があります。 2。JavaScriptは、フロントエンドとフルスタックの開発に大きな需要があり、その給与もかなりです。 3。影響要因には、経験、地理的位置、会社の規模、特定のスキルが含まれます。

javascriptの分解:それが何をするのか、なぜそれが重要なのか javascriptの分解:それが何をするのか、なぜそれが重要なのか Apr 09, 2025 am 12:07 AM

JavaScriptは現代のWeb開発の基礎であり、その主な機能には、イベント駆動型のプログラミング、動的コンテンツ生成、非同期プログラミングが含まれます。 1)イベント駆動型プログラミングにより、Webページはユーザー操作に応じて動的に変更できます。 2)動的コンテンツ生成により、条件に応じてページコンテンツを調整できます。 3)非同期プログラミングにより、ユーザーインターフェイスがブロックされないようにします。 JavaScriptは、Webインタラクション、シングルページアプリケーション、サーバー側の開発で広く使用されており、ユーザーエクスペリエンスとクロスプラットフォーム開発の柔軟性を大幅に改善しています。

JavaScriptを使用して、同じIDを持つArray要素を1つのオブジェクトにマージする方法は? JavaScriptを使用して、同じIDを持つArray要素を1つのオブジェクトにマージする方法は? Apr 04, 2025 pm 05:09 PM

同じIDを持つ配列要素をJavaScriptの1つのオブジェクトにマージする方法は?データを処理するとき、私たちはしばしば同じIDを持つ必要性に遭遇します...

Console.log出力の違い結果:なぜ2つの呼び出しが異なるのですか? Console.log出力の違い結果:なぜ2つの呼び出しが異なるのですか? Apr 04, 2025 pm 05:12 PM

Console.log出力の違いの根本原因に関する詳細な議論。この記事では、Console.log関数の出力結果の違いをコードの一部で分析し、その背後にある理由を説明します。 �...

Shiseidoの公式Webサイトのように、視差スクロールと要素のアニメーション効果を実現する方法は?
または:
Shiseidoの公式Webサイトのようにスクロールするページを伴うアニメーション効果をどのように実現できますか? Shiseidoの公式Webサイトのように、視差スクロールと要素のアニメーション効果を実現する方法は? または: Shiseidoの公式Webサイトのようにスクロールするページを伴うアニメーション効果をどのように実現できますか? Apr 04, 2025 pm 05:36 PM

この記事の視差スクロールと要素のアニメーション効果の実現に関する議論では、Shiseidoの公式ウェブサイト(https://www.shisido.co.co.jp/sb/wonderland/)と同様の達成方法について説明します。

JavaScriptは学ぶのが難しいですか? JavaScriptは学ぶのが難しいですか? Apr 03, 2025 am 12:20 AM

JavaScriptを学ぶことは難しくありませんが、挑戦的です。 1)変数、データ型、関数などの基本概念を理解します。2)非同期プログラミングをマスターし、イベントループを通じて実装します。 3)DOM操作を使用し、非同期リクエストを処理することを約束します。 4)一般的な間違いを避け、デバッグテクニックを使用します。 5)パフォーマンスを最適化し、ベストプラクティスに従ってください。

フロントエンド開発でVSCodeと同様に、パネルドラッグアンドドロップ調整機能を実装する方法は? フロントエンド開発でVSCodeと同様に、パネルドラッグアンドドロップ調整機能を実装する方法は? Apr 04, 2025 pm 02:06 PM

フロントエンドのVSCodeと同様に、パネルドラッグアンドドロップ調整機能の実装を調べます。フロントエンド開発では、VSCODEと同様のVSCODEを実装する方法...

See all articles