####JavaScript --JS不区分单引号和双引号 注释有两种:/*注释内容*/ //注释内容
--脚本语言
--直接嵌入HTML页面
--一种网页编程技术,用来向HTML页面添加交互行为
--具有与Java与C语言相似的语法
--由浏览器解释执行代码,不进行预编译 由上到下逐行执行
## JS的使用方式
-在实际定义时直接写JS
-嵌入式:在script标签里写JS。该标签可以写在页面任意位置,通常都写在head里
-文件调用式:在js文件中写JS。script标签只能做一件事,要么直接写JS,要么用它来引入JS。
<script src=".js文件的相对路径" type="text/javascript"></script>
-CSS外部样式表
-当样式需要应用到很多页面的时候,就可以使用外部样式表。
-创建样式文件(.css文件) 文件中只能包含样式规则
-在<head></head>中引用样式文件:<link rel="stylesheet" href="文件名.css文件的相对路径"/>
## 位于函数内的JS,页面加载时不会直接调用,
浏览器仅仅是**定义了这个函数而已**,等待用户通过点击按钮等行为触发事件时才调用此函数。
位于函数外的JS,页面加载时直接调用他们,即这些JS的执行时机是早于body中的元素的。
##从表单控件(input/select/textarea)中读写数据:(可输入.读值用value) (select及其子元素option也可以使用innerHTML)
-读:input.value
-写:input.value="值";
##从文本元素(div/h/p/span/..)中读写数据:(只读性元素.读内容)
-读:span.innerHTML
-写:span.innerHTML="值";
##如何获取元素:
document.getElementById("id");
##JS调试技巧
-看控制台的报错信息
-打桩:看程序执行的步骤,看每一步变量的值是否正确。
-二分法+排除法:定位错误的位置
##JS中的条件表达式可以是任意表达式
简述 arguments 对象的作用。
--参考答案
在函数代码中,使用特殊对象 arguments可以访问函数的参数。即,开发者在定义函数时,无需明确的为方法声明参数,
也可以在方法体中使用 arguments 来访问参数。这是因为,arguments 是一种特殊对象,在函数代码中,表示函数的参数数组。
正因为 arguments 表示参数组成的数组,因此,首先可以使用arguments.length检测函数的参数个数,
其次,可以通过下标(arguments[index])来访问某个参数。
这样,可以用 arguments 对象判断传递给函数的参数个数并获取参数,从而模拟函数重载。
##基础语法
##内置对象
-String对象
-Number对象
-toFixed(n); 转换为字符串,并保留小数点后n位。(四舍五入)
-Boolean对象
-Array对象
-reverse();
-sort();
-Math对象
-Date对象
-toLocaleTimeString(); 上午9:55:36
-toLocaleDateString(); 2016/6/3
-RegExp对象
-reg.test(str); 重点 检测str中是否包含和reg相匹配的部分,包含返回true,否则返回false
-reg.exec(str); 非全局模式:找出首次匹配的部分;全局模式:第N次调用则找出第N个匹配的部分
-str.replace(reg,目标); 重点 非全局模式:在字符串中找出符合reg的部分,将首次匹配的替换为目标字符串
全局模式:将str中与reg匹配的部分全部替换为目标字符串
-str.match(reg); 从str中找出和reg匹配的子串
-str.search(reg); 从str中找出首次和reg匹配的索引
-Function
-arguments(); 重点
-eval(); 重点
##外部对象
#BOM
-window对象
-alert();
-confirm();
-prompt();
-setInterval();clearInterval(); 重点
-setTimeout();clearTimeout(); 重点
-location对象
-location.href = ""; 重点
-location.reload();
-history对象
-history.length;
-history.back();
-history.forward();
-history.go(num); num为正数等同于forward() num次;num为负数等同于back() num次;
-screen对象
-获取屏幕宽高(以像素为单位)
-navigator对象
-了解
##DOM
#读写
-名称:nodeName/nodeType
-内容:innerHTML/InnerText
-属性:setAttribute()/getAttribute() (节点.className)
#查询
-根据ID:document.getElementById("id"); 重点 标准,任何浏览器都支持
-根据标签名: 重点 标准,任何浏览器都支持
-document.getElementsByTagName("标签名"); 在整个页面上根据标签名查询节点
-父节点.getElementsByTagName("标签名"); 在某节点下根据标签名查询其子节点
-根据name属性: 标准,任何浏览器都支持
-document.getElementsByName("name属性值"); 比如说单选按钮的name属性<input type="radio" name="sex"/>
-根据class属性: 非标
-document.getElementsByClassName("class属性值");
-根据层次关系:
-查询父节点:子节点.parentNode; 标准,任何浏览器都支持
-查询子节点:
-父节点.childNodes; 虽是标准,但不适用,因为查询结果里包含了换行符(算一个子节点)
-父节点.getElementsByTagName("标签名"); 标准,任何浏览器都支持
-父节点.children 非标
-查询兄弟节点:
-某节点.parentNode.getElementsByTagName("标签名")[i]; 标准
-某节点.previousElementSibling; 查询哥哥 非标
-某节点.nextElementSibling; 查询弟弟 非标
#增删
-创建:document.createElement("节点名");
-追加:父节点.appendChild(节点1); //将节点1追加到所有子节点之后
-插入:父节点.insertBefore(节点1,节点2); //将节点1插入到节点2之前(兄弟关系)
-删除:父节点.removeChild(子节点);
自己删自己:节点.remove();
####自定义对象 无论采用哪种方式创建出来的对象时一样的(Object)
##1.直接量(JSON)
-直观、简单
-例var obj = {"属性":"属性值","属性":"属性值"} 属性肯定是字符串,但属性值任何都可以(String、Number、Function等都行)
-何时用:自己的方法封装数据,且已知数据时
##2.构造器
-JS内置构造器
-简单,灵活
-Date()/RegExp()/String()/Object()
-需要new的function才是构造器,否则是函数
-自己的方法封装数据,当时未知数据,以后才知道。
-自定义构造器
-麻烦、但直观
-封装的对象返回给他人使用
-自己声明一个函数,将此函数作为构造器使用
##3.create方法
-最新版本提出的方法,很多浏览器目前并不支持
####JS事件处理机制
##冒泡机制
-JS的事件是由内向外传播的
##作用
-可以简化事件的定义
-不需要再子元素上定义N次事件,仅仅需要在父元素上定义一次事件
##问题
-在采用冒泡机制简化事件时,必须知道事件源
-事件源:事件发生的源头(具体位置)
-事件源可以通过事件对象获取
####jQuery的哪些方法返回jQuery对象
-赋值的方法
-取值的方法若返回的是节点,一般是jQuery对象
-取值的方法若返回的是具体数据(字符、数字等),就是js内置对象
***可以随时打桩看此对象,有[]就是jQuery对象
--脚本语言
--直接嵌入HTML页面
--一种网页编程技术,用来向HTML页面添加交互行为
--具有与Java与C语言相似的语法
--由浏览器解释执行代码,不进行预编译 由上到下逐行执行
## JS的使用方式
-在实际定义时直接写JS
-嵌入式:在script标签里写JS。该标签可以写在页面任意位置,通常都写在head里
-文件调用式:在js文件中写JS。script标签只能做一件事,要么直接写JS,要么用它来引入JS。
<script src=".js文件的相对路径" type="text/javascript"></script>
-CSS外部样式表
-当样式需要应用到很多页面的时候,就可以使用外部样式表。
-创建样式文件(.css文件) 文件中只能包含样式规则
-在<head></head>中引用样式文件:<link rel="stylesheet" href="文件名.css文件的相对路径"/>
## 位于函数内的JS,页面加载时不会直接调用,
浏览器仅仅是**定义了这个函数而已**,等待用户通过点击按钮等行为触发事件时才调用此函数。
位于函数外的JS,页面加载时直接调用他们,即这些JS的执行时机是早于body中的元素的。
##从表单控件(input/select/textarea)中读写数据:(可输入.读值用value) (select及其子元素option也可以使用innerHTML)
-读:input.value
-写:input.value="值";
##从文本元素(div/h/p/span/..)中读写数据:(只读性元素.读内容)
-读:span.innerHTML
-写:span.innerHTML="值";
##如何获取元素:
document.getElementById("id");
##JS调试技巧
-看控制台的报错信息
-打桩:看程序执行的步骤,看每一步变量的值是否正确。
-二分法+排除法:定位错误的位置
##JS中的条件表达式可以是任意表达式
简述 arguments 对象的作用。
--参考答案
在函数代码中,使用特殊对象 arguments可以访问函数的参数。即,开发者在定义函数时,无需明确的为方法声明参数,
也可以在方法体中使用 arguments 来访问参数。这是因为,arguments 是一种特殊对象,在函数代码中,表示函数的参数数组。
正因为 arguments 表示参数组成的数组,因此,首先可以使用arguments.length检测函数的参数个数,
其次,可以通过下标(arguments[index])来访问某个参数。
这样,可以用 arguments 对象判断传递给函数的参数个数并获取参数,从而模拟函数重载。
##基础语法
##内置对象
-String对象
-Number对象
-toFixed(n); 转换为字符串,并保留小数点后n位。(四舍五入)
-Boolean对象
-Array对象
-reverse();
-sort();
-Math对象
-Date对象
-toLocaleTimeString(); 上午9:55:36
-toLocaleDateString(); 2016/6/3
-RegExp对象
-reg.test(str); 重点 检测str中是否包含和reg相匹配的部分,包含返回true,否则返回false
-reg.exec(str); 非全局模式:找出首次匹配的部分;全局模式:第N次调用则找出第N个匹配的部分
-str.replace(reg,目标); 重点 非全局模式:在字符串中找出符合reg的部分,将首次匹配的替换为目标字符串
全局模式:将str中与reg匹配的部分全部替换为目标字符串
-str.match(reg); 从str中找出和reg匹配的子串
-str.search(reg); 从str中找出首次和reg匹配的索引
-Function
-arguments(); 重点
-eval(); 重点
##外部对象
#BOM
-window对象
-alert();
-confirm();
-prompt();
-setInterval();clearInterval(); 重点
-setTimeout();clearTimeout(); 重点
-location对象
-location.href = ""; 重点
-location.reload();
-history对象
-history.length;
-history.back();
-history.forward();
-history.go(num); num为正数等同于forward() num次;num为负数等同于back() num次;
-screen对象
-获取屏幕宽高(以像素为单位)
-navigator对象
-了解
##DOM
#读写
-名称:nodeName/nodeType
-内容:innerHTML/InnerText
-属性:setAttribute()/getAttribute() (节点.className)
#查询
-根据ID:document.getElementById("id"); 重点 标准,任何浏览器都支持
-根据标签名: 重点 标准,任何浏览器都支持
-document.getElementsByTagName("标签名"); 在整个页面上根据标签名查询节点
-父节点.getElementsByTagName("标签名"); 在某节点下根据标签名查询其子节点
-根据name属性: 标准,任何浏览器都支持
-document.getElementsByName("name属性值"); 比如说单选按钮的name属性<input type="radio" name="sex"/>
-根据class属性: 非标
-document.getElementsByClassName("class属性值");
-根据层次关系:
-查询父节点:子节点.parentNode; 标准,任何浏览器都支持
-查询子节点:
-父节点.childNodes; 虽是标准,但不适用,因为查询结果里包含了换行符(算一个子节点)
-父节点.getElementsByTagName("标签名"); 标准,任何浏览器都支持
-父节点.children 非标
-查询兄弟节点:
-某节点.parentNode.getElementsByTagName("标签名")[i]; 标准
-某节点.previousElementSibling; 查询哥哥 非标
-某节点.nextElementSibling; 查询弟弟 非标
#增删
-创建:document.createElement("节点名");
-追加:父节点.appendChild(节点1); //将节点1追加到所有子节点之后
-插入:父节点.insertBefore(节点1,节点2); //将节点1插入到节点2之前(兄弟关系)
-删除:父节点.removeChild(子节点);
自己删自己:节点.remove();
####自定义对象 无论采用哪种方式创建出来的对象时一样的(Object)
##1.直接量(JSON)
-直观、简单
-例var obj = {"属性":"属性值","属性":"属性值"} 属性肯定是字符串,但属性值任何都可以(String、Number、Function等都行)
-何时用:自己的方法封装数据,且已知数据时
##2.构造器
-JS内置构造器
-简单,灵活
-Date()/RegExp()/String()/Object()
-需要new的function才是构造器,否则是函数
-自己的方法封装数据,当时未知数据,以后才知道。
-自定义构造器
-麻烦、但直观
-封装的对象返回给他人使用
-自己声明一个函数,将此函数作为构造器使用
##3.create方法
-最新版本提出的方法,很多浏览器目前并不支持
####JS事件处理机制
##冒泡机制
-JS的事件是由内向外传播的
##作用
-可以简化事件的定义
-不需要再子元素上定义N次事件,仅仅需要在父元素上定义一次事件
##问题
-在采用冒泡机制简化事件时,必须知道事件源
-事件源:事件发生的源头(具体位置)
-事件源可以通过事件对象获取
####jQuery的哪些方法返回jQuery对象
-赋值的方法
-取值的方法若返回的是节点,一般是jQuery对象
-取值的方法若返回的是具体数据(字符、数字等),就是js内置对象
***可以随时打桩看此对象,有[]就是jQuery对象