锦方的个人网页 · 如果有一天你突然想起了我


学习JavaScript笔记「2」

目录

函数

函数由单词function加上函数名组成。函数名后面是圆括号,再后面是左花括号。组成函数内容的语句出现在后面的行上,然后用右花括号结束这个函数。

function saySomething() {
 alert("Four score and seven years ago");
}

外部脚本

这些外部文件称为.js文件,因为无论它们叫什么,文件名都应该以.js后缀结尾。各个页面只需在script标签中添加src属性,就可以调用.js文件。

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

弹窗

alert("Welcome to my JavaScript page!");

noscript标签在不支持JavaScript的浏览器(老式浏览器和关闭了JavaScript功能的浏览器)上,会显示一条消息,它指出这个页面需要JavaScript。

交互的弹窗:

if (confirm("Are you sure you want to do that?")) {
  alert("You said yes");
}
else {
  alert("You said no");
}

条件语句分成3部分:if部分(在这里执行测试)、then部分(在这里放置在结果为true时要执行的脚本命令)和可选的else部分(这里包含在测试结果不为true时要执行的脚本命令)。在if部分中,我们要测试的内容放在圆括号中,其他两部分的内容分别包含在花括

confirm()方法有一个参数(向用户询问的问题),并根据用户的响应返回true或false

可以在then和else部分的花括号中放任意数量的语句。

编写任何脚本都有许多种方式,并且都能实现同样的效果。例如,当(且仅当)代码块中只有一条语句时,条件语句中就不需要使用花括号。 另外,还有一种可以替代条件语句的方法,其形式如下:

(condition) ? truePart : falsePart;
这相当于
if (condition) {
 truePart;
}
else {
 falsePart;
}

同样的简写方法也可以用来设置变量,例如:

myNewVariable = (condition) ? trueValue : falseValue;
这相当于
if (condition) {
 myNewVariable = trueValue;
}
else {
 myNewVariable = falseValue;
}

并不要求必须将花括号放在行尾或行首,true和false代码块的缩进也不是必需的。这些都是样式问题,对于你最合适的样式就是正确的样式。

使用对话框询问用户并处理回复:

var ans = prompt("Are you sure you want to do that?","");
if (ans) {
  alert("You said " + ans);
}
else {
  alert("You refused to answer");
}

var作用:

1、创建一个变量

2、定义变量的作用域

作用域(也就是通常所说的范围)是本地区的,比如说(A)就指本地的A。但如果要说杭州的A就需要说(杭州的A)。

链接

重定向:

window.onload = initAll;

function initAll() {
  document.getElementById("redirect").onclick = initRedirect;
}

function initRedirect() {
  window.location = "jswelcome.html";
  return false;
}
window.onload = initAll;

当完成页面加载时,触发initAll()函数。

function initAll() {
  document.getElementById("redirect").onclick = initRedirect;
}

这个函数告诉id为redirect的元素(也就是被点击的链接),在它被单击时应该调用initRedi-rect()函数。

function initRedirect() {
  window.location = "jswelcome.html";
  return false;
}

如果调用这个函数,它就将window.location(即浏览器中显示的页面)设置为一个新页面。return false表示停止对用户单击的处理,这样就不会加载href指向的页面。

改进链接

window.onload = initAll;

function initAll() {
  document.getElementById("redirect").onclick = initRedirect;
}
function initRedirect() {
  alert("你要去另一個網頁咯");
  window.location = this;
  return false;
}
alert("你要去另一個網頁咯");

在单击链接之后,会显示弹窗「你要去另一個網頁咯」。

window.location = this;

这一行将浏览器窗口设置为关键字this指定的位置,关键词this使脚本能够根据使用这个关键字的上下文将值传递给函数。在这里,this是在一个由标签的事件触发的函数中使用的,this是一个链接对象。(更多的还不知道26-08-2017)

多级条件

HTML建立多级条件的页面

<!DOCTYPE html>
<html>
<head>
  <title>Switch/Case handling</title>
  <script src="script09.js"></script>
</head>
<body>
<h2>Famous Presidential Quotes</h2>
<form action="#">
  <input type="button" id="Lincoln"value="Lincoln">
  <input type="button" id="Kennedy"value="Kennedy">
  <input type="button" id="Nixon"
value="Nixon">
</form>
</body>
</html>

script09.js

window.onload = initAll;

function initAll() {
    document.getElementById("Lincoln").onclick = saySomething;
    document.getElementById("Kennedy").onclick = saySomething;
    document.getElementById("Nixon").onclick = saySomething;
}

function saySomething() {
  switch(this.id) {
    case "Lincoln":
     alert("Four score and seven years ago...");
     break;
    case "Kennedy":
     alert("Ask not what your country can do for you...");
     break;
    case "Nixon":
     alert("I am not a crook!");
     break;
    default:
  }
}
window.onload = initAll;

当加载页面时,调用initAll()函数。

function initAll() {
    document.getElementById ("Lincoln").onclick = saySomething;
    document.getElementById ("Kennedy").onclick = saySomething;
    document.getElementById ("Nixon").onclick = saySomething;

在这个函数中,为页面上的每个按钮设置了onclick处理程序。因为在HTML中设置了id属性和value属性,所以可以使用getElementById()设置事件处理程序。如果有value属性,就可以使用getElementByValue()调用,那么就不必设置id属性。

function saySomething() {

这一行开始saySomething()函数。

switch(this.id) {

this对象的id用作switch()的参数。这个值将决定执行以下case语句中的哪一个。

case "Lincoln":
alert("Four score and seven years ago...");
break;

如果this对象的id是Lincoln,那么显示这个警告消息。如果用户单击Lincoln,就会进入这里的代码。但是,在这里已经执行了我们需要的操作,所以我们希望离开这个switch语句,为此,需要使用break语句。如果没有break,就会继续执行下面的所有代码。

case "Kennedy":
alert("Ask not what your country can do for you...");
break;

如果用户单击Kennedy,就会进入这个case块。

case "Nixon":
alert("I am not a crook!");
break;

最后,如果用户单击Nixon,就会进入这里,这里弹出另一个警告对话框,然后退出switch语句。

default:

如果用户的输入与上面的条件都不匹配,那么就会执行这里的代码。也就是说,如果switch值与任何case值都不匹配,就会进入default部分。default块是可选的。

}

这个右花括号结束switch语句。

处理错误

window.onload = initAll;

function initAll() {
  var ans = prompt("Enter a number","");
  try {
   if (!ans || isNaN(ans) || ans<0) {
     throw new Error("Not a valid number");
   }
   alert("The square root of " + ans + " is " + Math.sqrt(ans));
  }
  catch (errMsg) {
   alert(errMsg.message);
  }
}
var ans = prompt("Enter a number", "");

这是一个普通的提示,我们把它存储在ans变量中供以后使用。在这个示例中,希望用户输入一个数字。如果用户确实输入了合适的数字,JavaScript就会显示所输入数字的平方根。

try {

但是,如果他们没有输入数字,那么代码能够捕捉到这一错误并显示有意义的消息。即使用户在要求他们输入数字时输入了单词,我们也能够有礼貌地发出提示。首先使用try命令。在这块代码中,我们检查用户的输入是否有效。

if (!ans || isNaN(ans) || ans<0) {
 throw new Error("Not a valid number");
}

我们要关注3种情况:根本没有输入;用户输入了某些内容,但不是数字;输入的是数字,但它是负数(因为负数的平方根是虚数,这超出了这个示例的范围)。如果!ans是true,就意味着用户没有输入任何内容。内置的isNaN()方法检查传递给它的参数是否“不是数字(Not a Number)”。如果isNaN()返回true,就说明输入的内容是无效的。如果ans小于0,它就是负数。对于以上任何情况,都希望抛出一个错误,指出“Not a valid number(不是有效的数字)”。当抛出错误之后,JavaScript跳出try块并寻找对应的catch语句。因此,try块中其余的代码都被跳过。

alert("The square root of " + ans + " is " + Math.sqrt(ans));

如果输入了有效的内容,就显示平方根

}

这个右花括号结束try块。

catch (errMsg) {
 alert(errMsg.message);
}

这是出现错误时要使用的catch语句。error作为参数传递给它,它显示错误的message部分。如果没有抛出错误,catch中的代码就不会执行。

最后的{}块。这个部分放在catch后面,无论try块是否抛出错误,这里包含的代码都应该执行。

系列:web

该系列自动来自分类: web

  1. css 扩散列表
  2. JavaScript获取浏览器使用的语言
  3. 两个练习
  4. css RWD
  5. css 图片
  6. css 提示
  7. css 下拉
  8. css 表单
  9. css 导航栏
  10. css 单词
  11. HTML SVG
  12. HTML Canvas
  13. HTML 媒体
  14. HTML input
  15. HTML 结构
  16. 学习JavaScript笔记「4」
  17. 学习JavaScript笔记「3」
  18. 学习JavaScript笔记「2」 (当前)
  19. 学习JavaScript笔记「1」
  20. 微信小程序开发日志「4」
  21. 微信小程序开发日志「3」
  22. 微信小程序开发日志「2」
  23. 微信小程序开发日志「1」

下一篇推荐

系列继续阅读

学习JavaScript笔记「1」