js(javaScript)学习系列--基础

来源:互联网 发布:psd头像源码怎么使用 编辑:程序博客网 时间:2024/06/05 19:49

学习新技术,如果是主动式学习,那么最好便是自己去看教程网页了,如果是被动学习,那么视频是不错的选择

由于在搭建个人网页之初便决定要采用nodeJS来做,那么不可避免要学习js的内容了。
w3cSchool(w3school)是个不错的选择

first:html中的脚本需要位于< script>< /script>之间,而这个这放在body 或者 head 之中

很好理解,了一认为是脚本的开始和结束,网页内容的开始和结束

第一个例子 document.write(“”)

<!DOCTYPE html><html><body><p>JavaScript 能够直接写入 HTML 输出流中:</p><script>document.write("<h1>This is a heading</h1>");document.write("<p>This is a paragraph.</p>");</script><p>您只能在 HTML 输出流中使用 <strong>document.write</strong>。如果您在文档已加载后使用它(比如在函数中),会覆盖整个文档。</p></body></html>

document.write

后面这个提示有点意思,文档加载后使用它,啥意思?
看看这个例子

<!DOCTYPE html><html><body><h1>我的第一段 JavaScript</h1><p id="demo">JavaScript 能改变 HTML 元素的内容。</p><script>function myFunction(){x=document.getElementById("demo");  // 找到元素x.innerHTML="Hello JavaScript!";    // 改变内容//document.write('test')}</script><button type="button" onclick="myFunction()">点击这里</button></body></html>

效果图:点击按钮前
点击按钮前
点击按钮后
点击按钮后

可以看到这里是点击按钮之后再执行myFunction,此时,文档肯定已经加载完毕了,soga,原来是这个意思
再看看myFunction中做了什么,先通过id获得这个元素,然后插入 hello javascript。 但是这里的插入式直接替换了并不是我们认为的前后插入。
这个不就是之前说的文档加载完毕之后执行的情况吗
那么我们把注视的那行代码恢复看看

document.write('test')

点击按钮之前,还是一样,点击按钮之后,效果如下
点击按钮后
可以看到,这就是所谓的把整个文档覆盖掉
突发奇想,用document.write()来输出一个网页,岂不是也达到了网页跳转的效果?
但是,并没能成功实现,一行一行删除代码之后发现,如果有换行,就失效了,也就是说点击按钮无效,但是可以换行,不过要在前一行的末尾加上 \ 符号

获得到这个元素之后可以做很多事情,例如

x.style.color="#ff0000" // 修改文字的颜色x.style.background="#00FF00" // 修改背景x.src="/i/eg_bulboff.gif" // 修改图片x.value // 输入框输入的值(如果不是输入框呢?会变成undefined,undefined也是一个值)

style下一层又有很多属性,具体可参考链接:style属性

javaScript脚本到底是什么时候执行的呢?

一边加载一边执行?我认为是的,理由是:之前试过,如果在加载之后执行,document.wirte会把整个文档覆盖。除非之间还参杂了一个过程

javaScript需要在每一句中加上分号吗?

not necessary

如果变量重新声明会怎样?

不会改变其值, 例如

var carname="Volvo";var carname; // 值依然是"volvo"

javascript没有具体的类型,只有var?

是的,动态类型

可有科学计数法?

var y=123e5;      // 12300000var z=123e-5;  

数组怎么表示

var cars=new Array();cars[0]="Audi";cars[1]="BMW";cars[2]="Volvo";var cars=["Audi","BMW","Volvo"];

对象?

var person={firstname:"Bill", lastname:"Gates", id:5566};var person={firstname : "Bill",lastname  : "Gates",id        :  5566};name=person.lastname;name=person["lastname"];

Undefined 和 Null

Undefined 这个值表示变量不含有值。
可以通过将变量的值设置为 null 来清空变量。

javascript变量都是对象吗

是的,可以职位null清空值

var carname=new String;var x=      new Number;var y=      new Boolean;var cars=   new Array;var person= new Object;

单引号和双引号有区别吗?

并没有

怎么创建一个对象

person=new Object();person.firstname="Bill";person.lastname="Gates";person.age=56;person.eyecolor="blue";

方法怎么返回一个值呢

function myFunction(){var x=5;return x;}

局部变量和全局变量

  • 局部变量: 函数内部声明的变量,使用var
  • 全局变量: 在函数外部声明的变量,网页上的所有脚本和函数都可访问,当页面关闭后,全局变量被删除

for in 循环

与java不一样的是这里的循环还多了一种这样的形式

var person={fname:"John",lname:"Doe",age:25};for (x in person)  {  txt=txt + person[x];  }

文件外的javaScript

前面说的都是文件内的javaSript,那么文件外的呢,如何引入?

<!DOCTYPE html><html><body><h1>My Web Page</h1><p id="demo">A Paragraph.</p><button type="button" onclick="myFunction()">点击这里</button><p><b>注释:</b>myFunction 保存在名为 "myScript.js" 的外部文件中。</p><script type="text/javascript" src="/js/myScript.js"></script></body></html>

setTimeOut()方法用于在指定的毫秒数后调用函数或计算表达式。

语法 var t=setTimeout(“javascript语句”,毫秒)
可用clearTimeout(t) 停止
需要用引号包裹,可以单双引号,只执行一次,要循环执行,可调用方法本身或者用setInterval()
在web上显示一个时间,这个看了我很久,才看明白是个递归,不断调用获得时间

<html><head><script type="text/javascript">function startTime(){var today=new Date()var h=today.getHours()var m=today.getMinutes()var s=today.getSeconds()// add a zero in front of numbers<10m=checkTime(m)s=checkTime(s)document.getElementById('txt').innerHTML=h+":"+m+":"+st=setTimeout('startTime()',500)}function checkTime(i){if (i<10)   {i="0" + i}  return i}</script></head><body onload="startTime()"><div id="txt"></div></body></html>
0 0