<strong>在什么地方插入 JavaScript<br></strong> JavaScript 可以出现在 HTML 的任意地方。使用标记<script>…</script>,你可以在 HTML 文档的任意地方插入 JavaScript,甚至在<HTML>之前插入也不成问题。不过如果要在声明框架的网页(框架网页)中插入,就一定要在<frameset>之前插入,否则不会运行。<br>基本格式 <div class="blockcode"><font face="NSimsun"><code id="code0"><script><br><!--<BR>...<BR>(JavaScript代码)<BR>...<BR>//--><br></script></code><br></font></div>The purpose of the second and fourth lines is to cause browsers that don't understand the <script> tag to ignore the JavaScript code. Generally you can omit it, because now if you want to find a browser that doesn't understand Script, I'm afraid there is no one even in the museum. The double backslash "//" in front of the fourth line is a comment mark in JavaScript, which we will learn later. <br><br>Another way to insert JavaScript is to write the JavaScript code into another file (this file should usually have a ".js" extension), and then use the format "<script src=" javascript.js "></script>" tag embeds it into the document. Note that it must be marked with "</script>". <br>Reference The <script> tag also has an attribute: language (abbreviated as lang), which describes the language used by the script. For JavaScript, use "language="JavaScript"". <br>Reference Compared to the <script> tag, there is also a <server> tag. The <server> tag contains server-side scripts. This tutorial only discusses client-side JavaScript, that is, scripts included with the <script> tag. <br>If you want to execute a JavaScript statement in the browser's "Address" bar, use this format: <br>javascript:<JavaScript Statement><br>This format can also be used in a connection: <br> <a href="javascript:<JavaScript statement>">...</a><br><br><strong>Basic syntax of JavaScript</strong><br>Each JavaScript sentence has something like The following format: <br><Statement>;<br>where the semicolon ";" is the JavaScript language identifier that ends a statement. Although many browsers now allow a carriage return as the closing symbol, it is still a good habit to develop the habit of ending with a semicolon. <br>Statement block A statement block is one or n statements enclosed by curly brackets "{ }". Inside the braces are several statements, but outside the braces, the block of statements is treated as one statement. Statement blocks can be nested, that is, a statement block can contain one or more statement blocks. <br><br><strong>Variables in JavaScript</strong><br>What is a variable? Literally, a variable is a variable amount; from a programming perspective, a variable is used to store some/certain values. of memory. The stored value can be a number, character, or something else. <br> Naming of variables The naming of variables has the following requirements: <br> only contains letters, numbers and/or underscores; <br> must start with a letter; <br> cannot be too long (actually, who likes to use long and What about the smelly name? ); <br> cannot be repeated with JavaScript reserved words (Key Words, Reserved Words, there are too many to list one by one; all words that can be used to make JavaScript commands are reserved words). <br>Moreover, variables are case-sensitive, for example, variable and Variable are two different variables. Not only that, but most commands and "objects" (see the "Object-Based Programming" chapter) are case-sensitive. <br>Tip When naming variables, it is best to avoid using single letters "a", "b", "c", etc., and instead use words that can clearly express the role of the variable in the program. In this way, not only will others be able to understand your program more easily, but you will also quickly remember the role of the variable when you modify the program in the future. Variable names are generally in lowercase. If they are composed of multiple words, use lowercase for the first word and uppercase for the first letters of other words. For example: myVariable and myAnotherVariable. This is done just for beauty and readability, because some JavaScript commands (the word "command" will be explained in a more specific way later) are named in this way: indexOf; charAt, etc. <br>Variables need to be declared. Undeclared variables cannot be used, otherwise an error will occur: "Undefined". To declare a variable, you can use: <br><br>var <Variable> [= <Value>];<br><br>var The first keyword we come into contact with (that is, a reserved word). This keyword is used to declare variables. The simplest declaration method is "var <Variable>;", which will prepare memory for <Variable> and assign it an initial value of "null". If "= <value>" is added, the <variable> is assigned a custom initial value <value>. <br><br>Data type The data types that variables can use are: <br>Integer type can only store integers. It can be a positive integer, 0, negative integer, decimal, octal, or hexadecimal. The octal number is expressed by adding "0" before the number. For example, "0123" represents the octal number "123". For hexadecimal, add "0x": "0xEF" represents the hexadecimal number "EF".<br>浮点型 即“实型”,能储存小数。有资料显示,某些平台对浮点型变量的支持不稳定。没有需要就不要用浮点型。<br>字符串型 是用引号“" "”、“' '”包起来的零个至多个字符。用单引号还是双引号由你决定。跟语文一样,用哪个引号开始就用哪个结束,而且单双引号可嵌套使用:'这里是"JavaScript 教程"。' 不过跟语文不同的是,JavaScript 中引号的嵌套只能有一层。如果想再多嵌一些,你需要转义字符:<br> 转义字符 由于一些字符在屏幕上不能显示,或者 JavaScript 语法上已经有了特殊用途,在要用这些字符时,就要使用“转义字符”。转义字符用斜杠“”开头:\' 单引号、\" 双引号、 换行符、 回车(以上只列出常用的转义字符)。于是,使用转义字符,就可以做到引号多重嵌套:'Micro 说:"这里是\"JavaScript 教程\"。" '<br>布尔型 常用于判断,只有两个值可选:true(表“真”)和 false(表“假”)。true 和 false 是 JavaScript 的保留字。它们属于“常数”。<br>对象 关于对象,在“对象化编程”一章将详细讲到。<br>由于 JavaScript 对数据类型的要求不严格,一般来说,声明变量的时候不需要声明类型。而且就算声明了类型,在过程中还可以给变量赋予其他类型的值。声明类型可以用赋予初始值的方法做到: <div class="blockcode"><font face="NSimsun"><code id="code1">var aString = '';</code><br></font></div>这将把 aString 定义为具有空值的字符串型变量。 <div class="blockcode"><font face="NSimsun"><code id="code2">var anInteger = 0;</code><br></font></div>这将把 anInteger 定义为值为 0 的整型。<br>变量的赋值 一个变量声明后,可以在任何时候对其赋值。赋值的语法是:<br><变量> = <表达式>;<br>其中“=”叫“赋值符”,它的作用是把右边的值赋给左边的变量。下一节将讨论到表达式。 <br><br>JavaScript常数 有下列几个:<br><br>null 一个特殊的空值。当变量未定义,或者定义之后没有对其进行任何赋值操作,它的值就是“null”。企图返回一个不存在的对象时也会出现null值。<br>NaN “Not a Number”。出现这个数值比较少见,以至于我们可以不理它。当运算无法返回正确的数值时,就会返回“NaN”值。NaN 值非常特殊,因为它“不是数字”,所以任何数跟它都不相等,甚至 NaN 本身也不等于 NaN 。<br>true 布尔值“真”。用通俗的说法,“对”。<br>false 布尔值“假”。用通俗的说法,“错”。<br><br>在 Math 对象中还有一系列数学常数。这将在讨论“对象化编程”时谈到。<br><br><strong>表达式与运算符</strong><br>表达式 与数学中的定义相似,表达式是指具有一定的值的、用运算符把常数和变量连接起来的代数式。一个表达式可以只包含一个常数或一个变量。运算符可以是四则运算符、关系运算符、位运算符、逻辑运算符、复合运算符。下表将这些运算符从高优先级到低优先级排列:<br> <table class="t_table" style="WIDTH: 0px" cellspacing="0"> <tbody> <tr> <td width="60">括号</td> <td width="120">(x) [x]</td> <td width="400">中括号只用于指明<strong>数组</strong>的<strong>下标</strong> </td> </tr> <tr> <td rowspan="6">求反、自加、自减</td> <td>-x</td> <td>返回 x 的相反数</td> </tr> <tr> <td>!x</td> <td>返回与 x (布尔值)相反的布尔值</td> </tr> <tr> <td>x++</td> <td>x 值加 1,但仍返回原来的 x 值</td> </tr> <tr> <td>x--</td> <td>x 值减 1,但仍返回原来的 x 值 </td> </tr> <tr> <td>++x</td> <td>x 值加 1,返回后来的 x 值</td> </tr> <tr> <td>--x</td> <td>x 值减 1,返回后来的 x 值</td> </tr> <tr> <td rowspan="3">乘、除</td> <td>x*y</td> <td>返回 x 乘以 y 的值</td> </tr> <tr> <td>x/y</td> <td>返回 x 除以 y 的值</td> </tr> <tr> <td>x%y</td> <td>返回 x 与 y 的模(x 除以y 的余数)</td> </tr> <tr> <td rowspan="2">加、减</td> <td>x+y</td> <td>返回 x 加 y 的值</td> </tr> <tr> <td>x-y</td> <td>返回 x 减 y 的值</td> </tr> <tr> <td>关系运算</td> <td>x<y x<=y<BR>x>=y x>y</td> <td>当符合条件时返回 true 值,否则返回 false 值</td> </tr> <tr> <td rowspan="2">等于、<br>不等于</td> <td>x==y</td> <td>当 x 等于 y 时返回 true 值,否则返回 false 值</td> </tr> <tr> <td>x!=y</td> <td>当 x 不等于 y 时返回 true 值,否则返回 false 值</td> </tr> <tr> <td>位与</td> <td>x&y</td> <td>当两个数位同时为 1 时,返回的数据的当前数位为 1,其他情况都为 0</td> </tr> <tr> <td>位异或</td> <td>x^y</td> <td>两个数位中有且只有一个为 0 时,返回 0,否则返回 1</td> </tr> <tr> <td>位或</td> <td>x|y</td> <td>两个数位中只要有一个为 1,则返回 1;当两个数位都为零时才返回零</td> </tr> <tr> <td colspan="3">位运算符通常会被当作逻辑运算符来使用。它的实际运算情况是:把两个操作数(即 x 和 y)化成二进制数,对每个数位执行以上所列工作,然后返回得到的新二进制数。由于“真”值在电脑内部(通常)是全部数位都是 1 的二进制数,而“假”值则是全部是 0 的二进制数,所以位运算符也可以充当逻辑运算符。</td> </tr> <tr> <td>逻辑与</td> <td>x&&y</td> <td>当 x 和 y 同时为 true 时返回 true,否则返回 false</td> </tr> <tr> <td>逻辑或</td> <td>x||y</td> <td>当 x 和 y 任意一个为 true 时返回 true,当两者同时为 false 时返回 false</td> </tr> <tr> <td colspan="3">逻辑与/或有时候被称为“快速与/或”。这是因为当第一操作数(x)已经可以决定结果,它们将不去理会 y 的值。例如,false && y,因为x == false,不管 y 的值是什么,结果始终是 false,于是本表达式立即返回 false,而不论 y 是多少,甚至 y 可以导致出错,程序也可以照样运行下去。 </td> </tr> <tr> <td>条件</td> <td>c?x:y</td> <td>当条件 c 为 true 时返回 x 的值(执行 x 语句),否则返回 y 的值(执行 y 语句)</td> </tr> <tr> <td rowspan="2">赋值、<br>复合运算</td> <td>x=y</td> <td>把 y 的值赋给 x,返回所赋的值</td> </tr> <tr> <td>x+=y x-=y x*=y<br>x/=y x%=y</td> <td>x 与 y 相加/减/乘/除/求余,所得结果赋给 x,并返回 x 赋值后</td> </tr> </tbody> </table> <br><br><i>注意</i> 所有与四则运算有关的运算符都不能作用在字符串型变量上。字符串可以使用 +、+= 作为连接两个字符串之用。<br><br><i>提示</i> 请密切注意运算的优先级。编程时如果不记得运算符的优先级,可以使用括号( )。例如:(a == 0)||(b == 0)。<br><br>一些用来赋值的表达式,由于有返回的值,可以加以利用。例如,用以下语句:a = b = c = 10,可以一次对三个变量赋值。<br><br><strong>语句</strong><br>下面将开始讨论 JavaScript 基本编程命令,或者叫“语句”。<br><br><i>注释</i><br><br>像其他所有语言一样,JavaScript 的注释在运行时也是被忽略的。注释只给程序员提供消息。<br><br>JavaScript 注释有两种:单行注释和多行注释。单行注释用双反斜杠“//”表示。当一行代码有“//”,那么,“//”后面的部分将被忽略。而多行注释是用“/*”和“*/”括起来的一行到多行文字。程序执行到“/*”处,将忽略以后的所有文字,直到出现“*/”为止。<br><br>提示 如果你的程序需要草稿,或者需要让别人阅读,注释能帮上大忙。养成写注释的习惯,能节省你和其他程序员的宝贵时间,使他们不用花费多余的时间琢磨你的程序。在程序调试的时候,有时需要把一段代码换成另一段,或者暂时不要一段代码。这时最忌用 Delete 键,如果想要回那段代码怎么办?最好还是用注释,把暂时不要的代码“隐”去,到确定方法以后再删除也不迟。<br><br><i>if 语句</i> <div class="blockcode"><font face="NSimsun"><code id="code3">if ( <条件> ) <语句1> [ else <语句2> ];</code><br></font></div>本语句有点象条件表达式“?:”:当<条件>为真时执行<语句1>,否则,如果 else 部分存在的话,就执行<语句2>。与“?:”不同的是,if 只是一条语句,不会返回数值。<条件>是布尔值,必须用小括号括起来;<语句1>和<语句2>都只能是一个语句,欲使用多条语句,请用语句块。<br><br>注意 请看下例: <div class="blockcode"><font face="NSimsun"><code id="code4">if (a == 1)<br> if (b == 0) alert(a+b);<br>else<br> alert(a-b);</code><br></font></div>本代码企图用缩进的方法说明 else 是对应 if (a == 1) 的,但是实际上,由于 else 与 if (b == 0) 最相近,本代码不能按作者的想法运行。正确的代码是 <div class="blockcode"><font face="NSimsun"><code id="code5">if (a == 1) {<br> if (b == 0) alert(a+b);<br>} else {<br> alert(a-b);<br>}</code><br></font></div> <i>提示</i> 一行代码太长,或者涉及到比较复杂的嵌套,可以考虑用多行文本,如上例,if (a == 1) 后面没有立即写上语句,而是换一行再继续写。浏览器不会混淆的,当它们读完一行,发现是一句未完成语句,它们会继续往下读。使用缩进也是很好的习惯,当一些语句与上面的一两句语句有从属关系时,使用缩进能使程序更易读,方便程序员进行编写或修改工作。<br><br><i>循环体</i> <div class="blockcode"><font face="NSimsun"><code id="code6">for (<变量>=<初始值>; <循环条件>; <变量累加方法>) <语句>;</code><br></font></div>本语句的作用是重复执行<语句>,直到<循环条件>为 false 为止。它是这样运作的:首先给<变量>赋<初始值>,然后*判断<循环条件>(应该是一个关于<变量>的条件表达式)是否成立,如果成立就执行<语句>,然后按<变量累加方法>对<变量>作累加,回到“*”处重复,如果不成立就退出循环。这叫做“for循环”。下面看看例子。 <div class="blockcode"><font face="NSimsun"><code id="code7">for (i = 1; i < 10; i++) document.write(i);</CODE><BR></FONT></DIV>本语句先给 i 赋初始值 1,然后执行 document.write(i)语句(作用是在文档中写 i 的值,请参越“对象化编程”一章);重复时 i++,也就是把 i 加 1;循环直到 i<10 不满足,也就是 i>=10 时结束。结果是在文档中输出了“123456789”。<br><br>和 if 语句一样,<语句>只能是一行语句,如果想用多条语句,你需要用语句块。<br><br>与其他语言不同,JavaScript 的 for 循环没有规定循环变量每次循环一定要加一或减一,<变量累加方法>可以是任意的赋值表达式,如 i+=3、i*=2、i-=j 等都成立。<br><br>提示 适当的使用 for 循环,能使 HTML 文档中大量的有规律重复的部分简化,也就是用 for 循环重复写一些 HTML 代码,达到提高网页下载速度的目的。不过请在 Netscape 中重复进行严格测试,保证通过了才好把网页传上去。作者曾试过多次因为用 for 循环向文档重复写 HTML 代码而导致 Netscape“猝死”。IE 中绝对没有这种事情发生,如果你的网也是只给 IE 看的,用多多的 for 也没问题。<br><br><i>除了 for 循环,JavaScript 还提供 while 循环。</i> <div class="blockcode"><font face="NSimsun"><code id="code8">while (<循环条件>) <语句>;</code><br></font></div>比 for 循环简单,while 循环的作用是当满足<循环条件>时执行<语句>。while 循环的累加性质没有 for 循环强。<语句>也只能是一条语句,但是一般情况下都使用语句块,因为除了要重复执行某些语句之外,还需要一些能变动<循环条件>所涉及的变量的值的语句,否则一但踏入此循环,就会因为条件总是满足而一直困在循环里面,不能出来。这种情况,我们习惯称之为“死循环”。死循环会弄停当时正在运行的代码、正在下载的文档,和占用很大的内存,很可能造成死机,应该尽最大的努力避免。<br><br><i>break 和 continue</i><br><br>有时候在循环体内,需要立即跳出循环或跳过循环体内其余代码而进行下一次循环。break 和 continue 帮了我们大忙。<br><br>break;<br><br>本语句放在循环体内,作用是立即跳出循环。<br><br>continue;<br><br>本语句放在循环体内,作用是中止本次循环,并执行下一次循环。如果循环的条件已经不符合,就跳出循环。<br><br>例 <div class="blockcode"><font face="NSimsun"><code id="code9">for (i = 1; i < 10; i++) {<BR> if (i == 3 || i == 5 || i == 8) continue;<BR> document.write(i);<BR>}</CODE><BR></FONT></DIV>输出:124679。<br><br><I>switch 语句</I><br><br>如果要把某些数据分类,例如,要把学生的成绩按优、良、中、差分类,我们可能会用 if 语句: <DIV class=blockcode><FONT face=NSimsun><CODE id=code10>if (score >= 0 && score < 60) {<br> result = 'fail';<br>} else if (score < 80) {<br> result = 'pass';<br>} else if (score < 90) {<br> result = 'good';<br>} else if (score <= 100) {<br> result = 'excellent';<br>} else {<br> result = 'error';<br>}</code><br></font></div>看起来没有问题,但使用太多的 if 语句的话,程序看起来有点乱。switch 语句就是解决这种问题的最好方法。 <div class="blockcode"><font face="NSimsun"><code id="code11">switch (e) {<br> case r1: (注意:冒号)<br> ...<br> [break;]<br> case r2:<br> ...<br> [break;]<br> ...<br> [default:<br> ...]<br>} </code><br></font></div>The function of this large section is: calculate the value of e (e is an expression), and then compare it with r1, r2... after the "case" below. When a value equal to e is found, the "case" is executed. The following statements until encountering the break statement or the end of the switch paragraph ("}"). If no value matches e, then the statement following "default:" is executed. If there is no default block, the switch statement ends. <br><br>The if section above can be rewritten with switch: <div class="blockcode"><font face="NSimsun"><code id="code12">switch (parseInt(score / 10)) {<br> case 0:<br> case 1:<br> case 2:<br> case 3:<br> case 4:<br> case 5:<br> result = 'fail';<br> break;<br> case 6:<br> case 7:<br> result = 'pass';<br> break;<br> case 8:<br> result = 'good';<br> break;<br> case 9:<br> result = 'excellent';<br> break;<br> default:<br> if (score == 100)<br> result = 'excellent';<br> else<br> result = 'error';<br>}</code><br></font></div>The parseInt() method will be introduced later and is used for rounding. The if statement used in the last default section is to avoid treating 100 points as an error (parseInt(100 / 10) == 10). <br></code></font></div>