js查漏补缺【未完】

时间:2022-08-13 15:25:33

1.初始

    1.小补。

      1.在文本字符串中使用反斜杠对代码行进行换行。

      

document.write("Hello \
World!");

2.document.write

document.write("<h1>This is a heading</h1>");
只能在 HTML 输出中使用 document.write。如果您在文档加载后使用该方法,会覆盖整个文档。

     2.变量。

           1.在计算机程序中,经常会声明无值的变量。未使用值来声明的变量,其值实际上是 undefined。

        2.如果重新声明 JavaScript 变量,该变量的值不会丢失。

     3.数据类型。

          1.字符串,数字,布尔值,数组,对象,Null,Undefined

        2.对象属性有两种寻址方式:

name=person.lastname;
name=person["lastname"];

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

        4.声明新变量时,可以使用关键词 "new" 来声明其类型:

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

           5.JavaScript 变量均为对象。当您声明一个变量时,就创建了一个新的对象。    

     4.对象。

      1.在JS中,对象是拥有属性和方法的数据。属性是外形,方法是能力。      

//属性
car.name=Fiat car.model=500 car.weight=850kg car.color=white
//方法
car.start() car.drive() car.brake()

        5.函数。

             1.有时,我们会希望函数将值返回调用它的地方。通过使用 return 语句就可以实现。在使用 return 语句时,函数会停止执行,并返回指定的值。

。        

        2.在 JavaScript 函数内部声明的变量(使用 var)是局部变量,所以只能在函数内部访问它。(该变量的作用域是局部的)。可以在不同的函数中使用名称相同的局部变量,因为只有声明过该变量的函数才能识别出该变量。只要函数运行完毕,本地变量就会被删除。

        3.如果值赋给尚未声明的变量,该变量将被自动作为全局变量声明。这条语句:carname="Volvo";将声明一个全局变量 carname,即使它在函数内执行。

      

    6.运算符。

       给定 y=5,下面的表格解释了这些算术运算符:      

运算符 描述 例子 结果
+ x=y+2 x=7
- x=y-2 x=3
* x=y*2 x=10
/ x=y/2 x=2.5
% 求余数 (保留整数) x=y%2 x=1
++ 累加 x=++y x=6
-- 递减 x=--y 4

      给定 x=10 和 y=5,下面的表格解释了赋值运算符:

运算符 例子 等价于 结果
= x=y   x=5
+= x+=y x=x+y x=15
-= x-=y x=x-y x=5
*= x*=y x=x*y x=50
/= x/=y x=x/y x=2
%= x%=y x=x%y x=0

      

     7.逻辑运算符。

        greeting=(visitor=="PRES")?"Dear President ":"Dear ";

        如果变量 visitor 中的值是 "PRES",则向变量 greeting 赋值 "Dear President ",否则赋值 "Dear"。

      

     8.if语句。

          1.if....else if...else 语句

if (条件 1)
{
当条件 1 为 true 时执行的代码
}
else if (条件 2)
{
当条件 2 为 true 时执行的代码
}
else
{
当条件 1 和 条件 2 都不为 true 时执行的代码
}

      

     9.switch 语句。

        

var day=new Date().getDay();
switch (day)
{
case 6:
x="Today it's Saturday";
break;
case 0:
x="Today it's Sunday";
break;
default:
x="Looking forward to the Weekend";
}

      

     10.for循环。

         for/in 语句循环遍历对象的属性:

        

var person={fname:"John",lname:"Doe",age:25};

for (x in person)
{
txt=txt + person[x];
}

     11.while循环。

         While 循环会在指定条件为真时循环执行代码块。while 循环与 for 循环很像。

cars=["BMW","Volvo","Saab","Ford"];
var i=;
while (cars[i])
{
document.write(cars[i] + "<br>");
i++;
}

    

      12.跳出循环。

       break     做选择题时,有一个选择不会,整个选择题都不做了,做判断题去

        continue     做选择题时,有一个选择不会,跳过不会的做下一个,按顺序做到判断题去

        return    做选择题时,有一个不会,直接不干了,睡觉去;

       

      13.错误。

        当错误发生时,当事情出问题时,JavaScript 引擎通常会停止,并生成一个错误消息。

        try{运行代码}    catch(err){处理错误}

      

<!DOCTYPE html>
<html>
<body> <script>
function myFunction()
{
try
{
var x=document.getElementById("demo").value;
if(x=="") throw "值为空";
if(isNaN(x)) throw "不是数字";
if(x>10) throw "太大";
if(x<5) throw "太小";
}
catch(err)
{
var y=document.getElementById("mess");
y.innerHTML="错误:" + err + "。";
}
}
</script> <h1>我的第一个 JavaScript 程序</h1>
<p>请输入 5 到 10 之间的数字:</p>
<input id="demo" type="text">
<button type="button" onclick="myFunction()">测试输入值</button>
<p id="mess"></p> </body>
</html>

2.HTMl Dom

    

      1.查找元素。

          注意:通过类名查找元素时在IE5 6 7 8中无效

        

        2.改变HTML。

            1.document.write()

              直接向HTML中输出流写内容;

              绝不要在文档加载完之后使用,会覆盖整个文档;

              括号内为字符串;

              输出内容放在body;

            2.innerHTML

               直接改变HTML内容;

            

<!DOCTYPE html>
<html>
<body> <h1 id="header">Old Header</h1> <script>
var element=document.getElementById("header");
element.innerHTML="New Header";
</script> </body>
</html>

            3.attribute

                改变HTML属性

<!DOCTYPE html>
<html>
<body> <img id="image" src="smiley.gif"> <script>
document.getElementById("image").src="landscape.jpg";
</script> </body>
</html>

          

         3.改变CSS。

                                    document.getElementById(id).style.property=new style

<!DOCTYPE html>
<html>
<body> <p id="p1">这是一段文本。</p> <input type="button" value="隐藏文本" onclick="document.getElementById('p1').style.visibility='hidden'" />
<input type="button" value="显示文本" onclick="document.getElementById('p1').style.visibility='visible'" /> </body>
</html>

        4.事件。

              1.事件添加:

                 使用事件属性:

<button onclick="displayDate()">点击这里</button>

                使用script:

<script>
document.getElementById("myBtn").onclick=function(){displayDate()};
</script>

              2..事件类型:

                 1>

onmousedown, onmouseup 以及 onclick 构成了鼠标点击事件的所有部分。首先当点击鼠标按钮时,会触发 onmousedown 事件,当释放鼠标按钮时,会触发 onmouseup 事件,最后,当完成鼠标点击时,会触发 onclick 事件。

<!DOCTYPE html>
<html>
<body> <div onmousedown="mDown(this)" onmouseup="mUp(this)" style="background-color:green;color:#ffffff;width:90px;height:20px;padding:40px;font-size:12px;">请点击这里</div> <script>
function mDown(obj)
{
obj.style.backgroundColor="#1ec5e5";
obj.innerHTML="请释放鼠标按钮"
} function mUp(obj)
{
obj.style.backgroundColor="green";
obj.innerHTML="请按下鼠标按钮"
}
</script> </body>
</html>

 

                       2>onload 和 onunload 事件会在用户进入或离开页面时被触发。onload 事件可用于检测访问者的浏览器类型和浏览器版本,并基于这些信息来加载网页的正确版本。onload 和 onunload 事件可用于处理 cookie。

                

<!DOCTYPE html>
<html>
<body onload="checkCookies()"> <script>
function checkCookies()
{
if (navigator.cookieEnabled==true)
{
alert("已启用 cookie")
}
else
{
alert("未启用 cookie")
}
}
</script> <p>提示框会告诉你,浏览器是否已启用 cookie。</p>
</body>
</html>

                  3>onchange 事件常结合对输入字段的验证来使用。离开触发

<!DOCTYPE html>
<html>
<head>
<script>
function myFunction()
{
var x=document.getElementById("fname");
x.value=x.value.toUpperCase();
}
</script>
</head>
<body> 请输入英文字符:<input type="text" id="fname" onchange="myFunction()">
<p>当您离开输入字段时,会触发将输入文本转换为大写的函数。</p> </body>
</html>

                  4>onmouseover 和 onmouseout 事件可用于在用户的鼠标移至 HTML 元素上方或移出元素时触发函数。

<!DOCTYPE html>
<html>
<body> <div onmouseover="mOver(this)" onmouseout="mOut(this)" style="background-color:green;width:120px;height:20px;padding:40px;color:#ffffff;">把鼠标移到上面</div> <script>
function mOver(obj)
{
obj.innerHTML="谢谢"
} function mOut(obj)
{
obj.innerHTML="把鼠标移到上面"
}
</script> </body>
</html>

                   5>当输入字段获得焦点时触发函数。 

<!DOCTYPE html>
<html>
<head>
<script>
function myFunction(x)
{
x.style.background="yellow";
}
</script>
</head>
<body> 请输入英文字符:<input type="text" onfocus="myFunction(this)"> <p>当输入字段获得焦点时,会触发改变背景颜色的函数。</p> </body>
</html>

          5.DOM节点。

               1.属性

                  1>innerHTML

                  innerHTML 属性对于获取或替换 HTML 元素的内容很有用。                

                   2>nodeName 属性规定节点的名称。

                    nodeName 是只读的    元素节点的 nodeName 与标签名相同     属性节点的 nodeName 与属性名相同       文本节点的 nodeName 始终是 #text         文档节点的 nodeName 始终是 #document

注释:nodeName 始终包含 HTML 元素的大写字母标签名。

                  3>nodeValue 属性规定节点的值。

                    元素节点的 nodeValue 是 undefined 或 null

文本节点的 nodeValue 是文本本身                     属性节点的 nodeValue 是属性值

<!DOCTYPE html>
<html>
<body> <p id="intro">Hello World!</p> <script>
x=document.getElementById("intro");
document.write(x.firstChild.nodeValue);
</script> </body>
</html>

                   4>nodeType 属性返回节点的类型。nodeType 是只读的。

比较重要的节点类型有:

元素类型 NodeType
元素 1
属性 2
文本 3
注释 8
文档 9

                2.访问

               getElementsByClassName() 在 Internet Explorer 5,6,7,8 中无效。

               3.修改 

                修改 HTML = 改变元素、属性、样式和事件。   

                即:改变 HTML 内容    改变 CSS 样式    改变 HTML 属性     创建新的 HTML 元素          删除已有的 HTML 元素             改变事件(处理程序)

                    1>创建HTML内容

                    直接覆盖原有:

<!DOCTYPE html>
<html>
<body> <p id="p1">Hello World!</p> <script>
document.getElementById("p1").innerHTML="New text!";
</script> <p>上面的段落被一段脚本改变了。</p> </body>
</html>

                       2>改变HTML样式

<!DOCTYPE html>
<html>
<body> <p id="p1">Hello world!</p>
<p id="p2">Hello world!</p> <script>
document.getElementById("p2").style.color="blue";
document.getElementById("p2").style.fontFamily="Arial";
document.getElementById("p2").style.fontSize="larger";
</script> </body>
</html>

                    3>创建新HTML元素

<!DOCTYPE html>
<html>
<body> <div id="div1">
<p id="p1">This is a paragraph.</p>
<p id="p2">This is another paragraph.</p>
</div> <script>
var para=document.createElement("p");
var node=document.createTextNode("This is new.");
para.appendChild(node); var element=document.getElementById("div1");
element.appendChild(para);
</script> </body>
</html>

                4.元素操作

                  添加  删除  替换                  

                  1>appendChild() 方法,将新元素作为父元素的最后一个子元素进行添加。

<!DOCTYPE html>
<html>
<body> <div id="div1">
<p id="p1">This is a paragraph.</p>
<p id="p2">This is another paragraph.</p>
</div> <script>
var para=document.createElement("p");
var node=document.createTextNode("This is new.");
para.appendChild(node); var element=document.getElementById("div1");
element.appendChild(para);
</script> </body>
</html>

                  2> insertBefore()

<!DOCTYPE html>
<html>
<body> <div id="div1">
<p id="p1">This is a paragraph.</p>
<p id="p2">This is another paragraph.</p>
</div> <script>
var para=document.createElement("p");
var node=document.createTextNode("This is new.");
para.appendChild(node); var element=document.getElementById("div1");
var child=document.getElementById("p1");
element.insertBefore(para,child);
</script> </body>
</html>

                  3>removChild()

                需删除 HTML 元素,您必须清楚该元素的父元素:

<!DOCTYPE html>
<html>
<body> <div id="div1">
<p id="p1">This is a paragraph.</p>
<p id="p2">This is another paragraph.</p>
</div> <script>
var parent=document.getElementById("div1");
var child=document.getElementById("p1");
parent.removeChild(child);
</script> </body>
</html>
var child=document.getElementById("p1");
child.parentNode.removeChild(child);

                  4>replaceChild()   

<!DOCTYPE html>
<html>
<body> <div id="div1">
<p id="p1">This is a paragraph.</p>
<p id="p2">This is another paragraph.</p>
</div> <script>
var parent=document.getElementById("div1");
var child=document.getElementById("p1");
var para=document.createElement("p");
var node=document.createTextNode("This is new.");
para.appendChild(node);
parent.replaceChild(para,child);
</script> </body>
</html>

               5.节点关系

                  1>下标号从 0 开始

                  2>parentNode、firstChild 以及 lastChild

<!DOCTYPE html>
<html>
<body> <p id="intro">Hello World!</p> <script>
x=document.getElementById("intro");
document.write(x.firstChild.nodeValue);
</script> </body>
</html>

                  3>dom 根节点    这里有两个特殊的属性,可以访问全部文档:    document.documentElement - 全部文档      document.body - 文档的主体

            • <!DOCTYPE html>
              <html>
              <body> <p>Hello World!</p>
              <div>
              <p>DOM 很有用!</p>
              <p>本例演示 <b>document.body</b> 属性。</p>
              </div> <script>
              alert(document.body.innerHTML);
              </script> </body>
              </html>

                   4>childNodes 和 nodeValue 属性来获取元素的内容

<!DOCTYPE html>
<html>
<body> <p id="intro">Hello World!</p> <script>
txt=document.getElementById("intro").childNodes[0].nodeValue;
document.write(txt);
</script> </body>
</html>

3.对象

        

        1.基本

               1.js中所有的事物都是对象

               2.对象只是带有属性和方法的特殊数据类型

                          属性是对象相关的值   方法是能够在对象上执行的动作 

               3.创建对象

                  1>定义并创建对象的实例

<!DOCTYPE html>
<html>
<body> <script>
person=new Object();
person.firstname="Bill";
person.lastname="Gates";
person.age=56;
person.eyecolor="blue";
document.write(person.firstname + " is " + person.age + " years old.");
</script> </body>
</html>

                   注:使用替代语法(使用对象literals)

<!DOCTYPE html>
<html>
<body> <script>
person={firstname:"Bill",lastname:"gates",age:56,eyecolor:"blue"} document.write(person.firstname + " is " + person.age + " years old.");
</script> </body>
</html>

                   2>使用对象构造器

<!DOCTYPE html>
<html>
<body> <script>
function person(firstname,lastname,age,eyecolor)
{
this.firstname=firstname;
this.lastname=lastname;
this.age=age;
this.eyecolor=eyecolor;
} myFather=new person("Bill","Gates",56,"blue"); document.write(myFather.firstname + " is " + myFather.age + " years old.");
</script> </body>
</html>

                      注:可以多次创建

                4.属性添加

person.firstname="Bill";
person.lastname="Gates";
person.age=56;
person.eyecolor="blue"; x=person.firstname;

                5.方法添加

<!DOCTYPE html>
<html>
<body>
<script>
function person(firstname,lastname,age,eyecolor)
{
this.firstname=firstname;
this.lastname=lastname;
this.age=age;
this.eyecolor=eyecolor; this.changeName=changeName;
function changeName(name)
{
this.lastname=name;
}
}
myMother=new person("Steve","Jobs",56,"green");
myMother.changeName("Ballmer");
document.write(myMother.lastname);
</script> </body>
</html>

                6.循环

<!DOCTYPE html>
<html>
<body>
<p>点击下面的按钮,循环遍历对象 "person" 的属性。</p>
<button onclick="myFunction()">点击这里</button>
<p id="demo"></p> <script>
function myFunction()
{
var x;
var txt="";
var person={fname:"Bill",lname:"Gates",age:56}; for (x in person)
{
txt=txt + person[x];
} document.getElementById("demo").innerHTML=txt;
}
</script>
</body>
</html>

            

          2.数字

                1.精度

                 整数(不使用小数点或指数计数法)最多为 15 位。小数的最大位数是 17,但是浮点运算并不总是 100% 准确:

<!DOCTYPE html>
<html>
<body> <script> var x;
document.write("<p>只有 17 位: ");
x=12345678901234567890;
document.write(x + "</p>"); document.write("<p>0.2 + 0.1 = ");
x=0.2+0.1;
document.write(x + "</p>"); document.write("<p>可分别乘以 10 并除以 10 : ");
x=(0.2*10+0.1*10)/10;
document.write(x +"</p>"); </script> </body>
</html>

                2.进制

                如果前缀为 0,则 JavaScript 会把数值常量解释为八进制数,如果前缀为 0 和 "x",则解释为十六进制数。绝不要在数字前面写零,除非需要进行八进制转换

var y=0377;
var z=0xFF;

                3.属性

                    1>NaN 属性是代表非数字值的特殊值。该属性用于指示某个值不是数字。可以把 Number 对象设置为该值,来指示其不是数字值。

NaN 与其他数值进行比较的结果总是不相等的,包括它自身在内。因此,不能与 Number.NaN 比较来检测一个值是不是数字,而只能调用 isNaN() 来比较。

  

<html>
<body> <script type="text/javascript"> document.write(isNaN(123)+ "<br />")
document.write(isNaN(-1.23)+ "<br />")
document.write(isNaN(5-2)+ "<br />")
document.write(isNaN(0)+ "<br />")
document.write(isNaN("Hello")+ "<br />")
document.write(isNaN("2005/12/12")+ "<br />") </script> </body>
</html>

      http://www.w3school.com.cn/jsref/jsref_obj_number.asp

                4.方法

http://www.w3school.com.cn/jsref/jsref_obj_number.asp

          

          3.字符串

http://www.w3school.com.cn/jsref/jsref_obj_string.asp

          4.日期

http://www.w3school.com.cn/jsref/jsref_obj_date.asp

          5.数组

http://www.w3school.com.cn/jsref/jsref_obj_array.asp

          6.布尔值逻辑

http://www.w3school.com.cn/jsref/jsref_obj_boolean.asp

          7.Math算数

http://www.w3school.com.cn/jsref/jsref_obj_math.asp

          8.正则表达式

http://www.w3school.com.cn/jsref/jsref_obj_regexp.asp

          9.全局对象

http://www.w3school.com.cn/jsref/jsref_obj_global.asp

          10.事件

http://www.w3school.com.cn/jsref/jsref_events.asp

4.浏览器对象

          1.window

            表示浏览器中打开的窗口。

                  1.全局变量是 window 对象的属性。全局函数是 window 对象的方法。甚至 HTML DOM 的 document 也是 window 对象的属性之一

                  2.windows尺寸

有三种方法能够确定浏览器窗口的尺寸(浏览器的视口,不包括工具栏和滚动条)。

对于Internet Explorer、Chrome、Firefox、Opera 以及 Safari:

  • window.innerHeight - 浏览器窗口的内部高度
  • window.innerWidth - 浏览器窗口的内部宽度

对于 Internet Explorer 8、7、6、5:

  • document.documentElement.clientHeight
  • document.documentElement.clientWidth

或者

  • document.body.clientHeight
  • document.body.clientWidth

实用的 JavaScript 方案(涵盖所有浏览器):

var w=window.innerWidth
|| document.documentElement.clientWidth
|| document.body.clientWidth; var h=window.innerHeight
|| document.documentElement.clientHeight
|| document.body.clientHeight;

http://www.w3school.com.cn/jsref/dom_obj_window.asp

             2.navigator

            Navigator 对象包含有关浏览器的信息。

http://www.w3school.com.cn/jsref/dom_obj_navigator.asp  

             3. screen

            Screen 对象包含有关客户端显示屏幕的信息。

http://www.w3school.com.cn/jsref/dom_obj_screen.asp

            

          4. history

            History 对象包含用户(在浏览器窗口中)访问过的 URL。

            History 对象是 window 对象的一部分,可通过 window.history 属性对其进行访问。

http://www.w3school.com.cn/jsref/dom_obj_history.asp

           5. location

            Location 对象包含有关当前 URL 的信息

            Location 对象是 Window 对象的一个部分,可通过 window.location 属性来访问。

http://www.w3school.com.cn/jsref/dom_obj_location.asp