文章目录
js是什么
js历史
为了统一三家,ECMA(欧洲计算机制造协会)定义了ECMA-262规范.国际标准化组织及国际电工委员会(ISO/IEC)也采纳ECMAScript作为标准(ISO/IEC-16262)。从此,Web浏览器就开始努力(虽然有着不同的程度的成功和失败)将ECMAScript作为JavaScript实现的基础。EcmaScript是规范.
js组成
JavaScript是一种专为与网页交互而设计的客户端脚本语言。最初是为了实现表单验证之前表单验证都是在服务器完成
JS组成:核心(ECMAScript)
浏览器对象模型(BOM)Broswerobjectmodel(整合js和浏览器)
文档对象模型(DOM)Documentobjectmodel(整合js,css,html)
JavaScript基本语法
JavaScript的语法很多都借鉴了C语言或者类C语言。在JavaScript中是区分大小写的,第一个字符必须是一个字母、下划线(_)或者美元符号($)符号。注视这一块也是C语言风格的注释,可以是//也可以是/**/。
typeof 操作符可以让用户知道变量是什么数据类型。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>网页标题</title>
<script type="text/javascript">
var flag = true;
alert(typeof flag);
//返回结果是 boolean
</script>
</head>
<body>
</body>
</html>
NAN
NAN是英文Not a Number的缩写,从英文意思就知道是非数值。这个数值主要表示本来要返回一个数值的操作数未返回数值的情况。(这样就不会抛错误了)。就举个例子,当 9 / “hello” 的时候,返回的则是NAN。因为9是数值但是"hello"不是数值而是字符串。isNAN()函数就是用来判断一个值到底是不是数值
alert(isNaN(NaN)); //true
alert(isNaN(666)); //false
数值转换
在JavaScript里面有三个函数可以把非数值转换成数值: Number()、parseInt()、parseFloat()。第一个函数Number可以用于任何数据类型、另外两个函数就是专门给字符串用的,在Java语言里面也见过这样的方法。
使用Number转化成数值的时候,字符串必须完全是数字,否则返回NAN。使用parseInt的时候,如果第一个字符是数值那么它会判断第二个字符是不是数值。直到遇见非数值的时候,后面的就不会再判断直接返回前面的内容了。就比如num3只返回了15一个道理。
var num1 = Number("helloworld"); //NAN
var num2 = parseInt("hello"); //NAN
var num3 = parseInt("15asf96"); //15
var num4 = parseInt("4546465"); //4546465
var num5 = Number("asf45448f4sa86"); //NAN
var num6 = Number("15464"); //15464
var num7 = Number("15asfasf"); //NAN
alert(num1 + " " + num2 + " " + num3 + " " + num4 + " " + num5 + " " + num6 + " " + num7);
字符串面量
js引入
- 直接在html中编写
<script type="text/javascript">
/* 警告弹出框 */
alert("hello world")
</script>
eg:
<!DOCTYPE html>
<html>
<head>
<title>js基础</title>
<script type="text/javascript">
alert("hello world")
</script>
</head>
<body>
</body>
</html>
- 外部引入js
<script type="text/javscript" src="js/demo.js">
js编写
js基本数据类型
数字number-->100,3.14
字符串string-->'hello'"hello"
布尔值boolean-->truefalse
特殊数据类型null-空undefined
-未声明`
js变量
变量,值可以改变的叫做变量
- 声明变量通过关键字(系统定义的有特殊功能的单词)var
<1>声明变量的时候,同时给变量赋值,叫初始化 - 变量赋值
- 同时定义多个变量变量之间要使用逗号隔开。
js标识符
标识符:用户自定义的所有名字叫做标识符
标识符规则:1.由数字、字母、下划线、$组成。除外的不可
2.不能以数字开头
3.区分大小写
4.标识符必须见名知意
JS-BOM
BOM就是浏览器的对象模型,浏览器可以通过调用系统对话框,向用户显示信息。
系统提供了三个函数,可以完成系统对话框的操作
window.alert("警告框");
window.confirm("请选择确定和取消");
window.prompt("请输入一个数","默认值");
JS-DOM
DOM是文档对象模型:开始到结束
HTML+CSS–>页面内容
JS–>页面行为操作
注:DOM是打通HTML与CSS和JS壁垒的工具
DOM中节点种类:三种–>在JS中所有节点都是对象。
元素节点->
属性节点->title=“属性节点”
文本节点->内容
1.通过id获取节点
<script>
var oDiv=document.getElementByld("div1")
alert(oDiv);
</script>
<body>
<div id="div1"></div>
</body>
通过该节点对象获取该标签属性
alert(oDiv.tagName);
alert(oDiv.innerHTM);
oDiv.innerHTML="<h1>我</h1>";-->会解析标签
.HTML属性:
id
title
style
class
Name
访问这些属性:
元素节点.属性名
元素节点[属性名]
alert(oDiv.id);
alert(oDiv.title);
alert(oDiv.className);
alert(oDiv.style);//样式对象
alert(oDiv.style.width);
oDiv.style.width="400px";
//style样式中background-color使用-链接的属性访问的时候
//需要将-去掉,然后将后续单词的首字母大写alert(oDiv.style.backgroundColor);
oDiv.style.backgroundColor="blue";
以上代码获取到的是null
原因:
因为代码从上往下执行,还没有加载出BOM元素(html代码)->就执
行script代码(DOM)
解决1.script放置body后面(但语法规范script要放在head标签中)
解决2.
window.onload = function(){//在页面加载完成以后执行的函
数}
如:
<script type="text/javascript">
window.onload = function(){
var res = document.getElementById('1');
alert(res);
alert(res.tagName);
alert(res.innerHTML);
}
</script>
JS编写注意
- type="text/javascript说明当前script标签中文本的类型
- 所有JS代码写在script标签
- script放在head标签中
- 可以引入多个script标签,多个script标签顺序执行
- js代码可以外部引入src引入外部文件
- 如果当前script标签作用是引入外部文件,那么这个script标签中就不能再写入代码了。
获取元素节点
通过顶层document节点获取
<-- id 属性:-->
document.getElementByld()
<-- tagName标签名:-->
document.getElementsByTagName()
<-- name属性:-->
document.getElementsByName()
<-- class属性:-->
documentsByClassName()
其中id属性是获取单个属性节点,而tagName标签,name属性,class属性,都可获取多个节点
例如:
<script type="text/javascript">
window.onload = function(){
var res = document.getElementsByTagName('li');
alert(res.length); //长度
}
</script>
</head>
<body>
<ul id='ul1'>
<li>111</li>
<li>222</li>
<li>333</li>
<li>444</li>
</ul>
<ol>
<li>555</li>
<li>666</li>
<li>777</li>
<li>888</li>
</ol>
</body>
结果:
拓展:
<script type="text/javascript">
window.onload = function(){
var res1 = document.getElementById('ul1'); //选定ul下的
var res2 = res1.getElementsByTagName('li'); //选定ul下的所有li
for(var i=0;i<res2.length;i++){
alert(res2[i].innerHTML); //用for循环打印所有输出
}
}
</script>
</head>
<body>
<ul id='ul1'>
<li>111</li>
<li>222</li>
<li>333</li>
<li>444</li>
</ul>
<ol>
<li>555</li>
<li>666</li>
<li>777</li>
<li>888</li>
</ol>
</body>
结果演示: