BOM对象,math对象document对象的属性和操作和 事件的基本操作
Math对象

- //该对象中的属性方法 和数学有关.
- abs(x) 返回数的绝对值。
- exp(x) 返回 e 的指数。
- floor(x) 对数进行下舍入。
- log(x) 返回数的自然对数(底为e)。
- max(x,y) 返回 x 和 y 中的最高值。
- min(x,y) 返回 x 和 y 中的最低值。
- pow(x,y) 返回 x 的 y 次幂。
- random() 返回 0 ~ 1 之间的随机数。
- round(x) 把数四舍五入为最接近的整数。
- sin(x) 返回数的正弦。
- sqrt(x) 返回数的平方根。
- tan(x) 返回角的正切。
- //方法练习:
- //alert(Math.random()); // 获得随机数 0~1 不包括1.
- //alert(Math.round(1.5)); // 四舍五入
- //练习:获取1-100的随机整数,包括1和100
- //var num=Math.random();
- //num=num*10;
- //num=Math.round(num);
- //alert(num)
- //============max min=========================
- /* alert(Math.max(1,2));// 2
- alert(Math.min(1,2));// 1 */
- //-------------pow--------------------------------
- alert(Math.pow(2,4));// pow 计算参数1 的参数2 次方.

BOM对象
window对象
- 所有浏览器都支持 window 对象。
概念上讲.一个html文档对应一个window对象.
功能上讲: 控制浏览器窗口的.
使用上讲: window对象不需要创建对象,直接使用即可
Window 对象方法

- alert() 显示带有一段消息和一个确认按钮的警告框。
- confirm() 显示带有一段消息以及确认按钮和取消按钮的对话框。
- prompt() 显示可提示用户输入的对话框。
- open() 打开一个新的浏览器窗口或查找一个已命名的窗口。
- close() 关闭浏览器窗口。
- setInterval() 按照指定的周期(以毫秒计)来调用函数或计算表达式。
- clearInterval() 取消由 setInterval() 设置的 timeout。
- setTimeout() 在指定的毫秒数后调用函数或计算表达式。
- clearTimeout() 取消由 setTimeout() 方法设置的 timeout。
- scrollTo() 把内容滚动到指定的坐标

方法使用
- alert('aaa');
- var result = confirm("您确定要删除吗?")
- /*点击确定返回true,取消返回false*/
- //prompt 参数1 : 提示信息. 参数2:输入框的默认值. 返回值是用户输入的内容.
- var result = prompt("请输入一个数字!","haha");
- // alert(result);

- 方法讲解:
- //open方法 打开和一个新的窗口 并 进入指定网址.参数1 : 网址.
- //调用方式1
- //open("http://www.baidu.com");
- //参数1 什么都不填 就是打开一个新窗口. 参数2.填入新窗口的名字(一般可以不填). 参数3: 新打开窗口的参数.
- open('','','width=200,resizable=no,height=100'); // 新打开一个宽为200 高为100的窗口
- //close方法 将当前文档窗口关闭.
- //close();

猜数字示例

- var num = Math.round(Math.random()*100);
- function acceptInput(){
- //2.让用户输入(prompt) 并接受 用户输入结果
- var userNum = prompt("请输入一个0~100之间的数字!","0");
- //3.将用户输入的值与 随机数进行比较
- if(isNaN(+userNum)){
- //用户输入的无效(重复2,3步骤)
- alert("请输入有效数字!");
- acceptInput();
- }
- else if(userNum > num){
- //大了==> 提示用户大了,让用户重新输入(重复2,3步骤)
- alert("您输入的大了!");
- acceptInput();
- }else if(userNum < num){
- //小了==> 提示用户小了,让用户重新输入(重复2,3步骤)
- alert("您输入的小了!");
- acceptInput();
- }else{
- //答对了==>提示用户答对了 , 询问用户是否继续游戏(confirm).
- var result = confirm("恭喜您!答对了,是否继续游戏?");
- if(result){
- //是 ==> 重复123步骤.
- num = Math.round(Math.random()*100);
- acceptInput();
- }else{
- //否==> 关闭窗口(close方法).
- close();
- }
- }
- }

setInterval,clearInterval
setInterval() 方法会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭。由 setInterval() 返回的 ID 值可用作 clearInterval() 方法的参数
- 语法:<br> setInterval(code,millisec)
- 其中,code为要调用的函数或要执行的代码串。millisec周期性执行或调用 code 之间的时间间隔,以毫秒计
时间显示示例

- <input id="ID1" type="text" onclick="begin()">
- <button onclick="end()">停止</button>
- <script>
- function showTime(){
- var nowd2=new Date().toLocaleString();
- var temp=document.getElementById("ID1");
- temp.value=nowd2;
- }
- var ID;
- function begin(){
- if (ID==undefined){
- showTime();
- ID=setInterval(showTime,1000);
- }
- }
- function end(){
- clearInterval(ID);
- ID=undefined;
- }
- </script>

window的子对象
navigator对象
浏览器对象,通过这个对象可以判定用户所使用的浏览器,包含了浏览器相关信息。
- navigator.appName // Web浏览器全称
- navigator.appVersion // Web浏览器厂商和版本的详细字符串
- navigator.userAgent // 客户端绝大部分信息
- navagator.platform // 浏览器运行所在的操作系统
screen对象
屏幕对象,不常用。
history对象
浏览历史对象,包含了用户对当前页面的浏览历史,但我们无法查看具体的地址,可以用来前进或后退一个页面。
- history.forward() // 前进一页
- history.back() // 后退一页
- history.go(n) // 前进n页
location对象
- location.href 获取URL
- location.href="URL" // 跳转到指定页面
- location.reload() 重新加载页面
DOM对象
HTML Document Object Model(文档对象模型)
HTML DOM 定义了访问和操作HTML文档的标准方法
HTML DOM 把 HTML 文档呈现为带有元素、属性和文本的树结构(节点树)
HTML 文档中的每个成分都是一个节点。
DOM节点
节点类型
DOM 是这样规定的:
整个文档是一个文档节点(document对象)
每个 HTML 标签是一个元素节点 (element 对象)
包含在 HTML 元素中的文本是文本节点
每一个 HTML 属性是一个属性节点(attribute对象)
节点关系
节点树中的节点彼此拥有层级关系。
父(parent),子(child)和同胞(sibling)等术语用于描述这些关系。父节点拥有子节点。同级的子节点被称为同胞(兄弟或姐妹)。
在节点树中,顶端节点被称为根(root)
每个节点都有父节点、除了根(它没有父节点)
一个节点可拥有任意数量的子
同胞是拥有相同父节点的节点
节点查找
- document.getElementById 根据ID获取一个标签
- document.getElementsByName 根据name属性获取标签集合
- document.getElementsByClassName 根据class属性获取
- document.getElementsByTagName 根据标签名获取标签合集
局部查找

- <div id="div1">
- <div class="div2">i am div2</div>
- <div name="yuan">i am div2</div>
- <div id="div3">i am div2</div>
- <p>hello p</p>
- </div>
- <script>
- var div1=document.getElementById("div1");
- ////支持;
- // var ele= div1.getElementsByTagName("p");
- // alert(ele.length);
- ////支持
- // var ele2=div1.getElementsByClassName("div2");
- // alert(ele2.length);
- ////不支持
- // var ele3=div1.getElementById("div3");
- // alert(ele3.length);
- ////不支持
- // var ele4=div1.getElementsByName("yuan");
- // alert(ele4.length)
- </script>

注意:设计到寻找元素,注意<script>标签的位置!
导航节点属性

- '''
- parentElement // 父节点标签元素
- children // 所有子标签
- firstElementChild // 第一个子标签元素
- lastElementChild // 最后一个子标签元素
- nextElementSibling // 下一个兄弟标签元素
- previousElementSibling // 上一个兄弟标签元素
- '''

注意,js中没有办法找到所有的兄弟标签!
其它方法(不常用)会找到包括节点中的文本内容和注释内容
- parentNode 父节点
- childNodes 所有子节点
- firstChild 第一个子节点
- lastChild 最后一个子节点
- nextSibling 下一个兄弟节点
- previousSibling 上一个兄弟节点
document对象的属性和操作
文本节点
innerText | 所有的纯文本内容,包括子标签中的文本 |
outerText | 与innerText类似 |
innerHTML | 所有子节点(包括元素、注释和文本节点) |
outerHTML | 返回自身节点与所有子节点 |
textContent | 与innerText类似,返回的内容带样式 |
data | 文本内容 |
length | 文本长度 |
createTextNode() | 创建文本 |
normalize() | 删除文本与文本之间的空白 |
splitText() | 分割 |
appendData() | 追加 |
deleteData(offset,count) | 从offset指定的位置开始删除count个字符 |
insertData(offset,text) | 在offset指定的位置插入text |
replaceData(offset,count,text) | 替换,从offset开始到offscount处的文本被text替换 |
substringData(offset,count) | 提取从ffset开始到offscount处的文本 |
获取文本节点的值:innerText innerHTML
属性节点

- elementNode.setAttribute(name,value) 改变属性的值
- elementNode.getAttribute(属性名) <-------------->elementNode.属性名(DHTML) 获取属性的值
- elementNode.removeAttribute(“属性名”); 删除属性
elementNode.attributes 获取所有标签属性

样式操作
操作class类
- elementNode.className 获取所有样式类名(字符串)
- elementNode.classList.remove(cls) 删除指定类
- elementNode.classList.add(cls) 添加类
- elementNode.classList.contains(cls) 存在返回true,否则返回false
- elementNode.classList.toggle(cls) 存在就删除,否则添加
改变css样式
- <p id="p2">Hello world!</p>
- document.getElementById("p2").style.color="blue";
- .style.fontSize=48px
JS操作CSS属性的规律:
1.对于没有中横线的CSS属性一般直接使用style.属性名即可。如:
- obj.style.margin
- obj.style.width
- obj.style.left
- obj.style.position
2.对含有中横线的CSS属性,将中横线后面的第一个字母换成大写即可。如:
- obj.style.marginTop
- obj.style.borderLeftWidth
- obj.style.zIndex
- obj.style.fontFamily
DOM Event(事件)
HTML 4.0 的新特性之一是有能力使 HTML 事件触发浏览器中的动作(action),比如当用户点击某个 HTML 元素时启动一段 JavaScript。下面是一个属性列表,这些属性可插入 HTML 标签来定义事件动作
事件类型

- onclick 当用户点击某个对象时调用的事件句柄。
- ondblclick 当用户双击某个对象时调用的事件句柄。
- onfocus 元素获得焦点。 练习:输入框
- onblur 元素失去焦点。 应用场景:用于表单验证,用户离开某个输入框时,代表已经输入完了,我们可以对它进行验证.
- onchange 域的内容被改变。 应用场景:通常用于表单元素,当元素内容被改变时触发.(三级联动)
- onkeydown 某个键盘按键被按下。 应用场景: 当用户在最后一个输入框按下回车按键时,表单提交.
- onkeypress 某个键盘按键被按下并松开。
- onkeyup 某个键盘按键被松开。
- onload 一张页面或一幅图像完成加载。
- onmousedown 鼠标按钮被按下。
- onmousemove 鼠标被移动。
- onmouseout 鼠标从某元素移开。
- onmouseover 鼠标移到某元素之上。
- onmouseleave 鼠标从元素离开
- onselect 文本被选中。
- onsubmit 确认按钮被点击

绑定事件方式
方式1:

- <div id="div" onclick="foo(this)">点我呀</div>
- <script>
- function foo(self){ // 形参不能是this;
- console.log("点你大爷!");
- console.log(self);
- }
- </script>

方式2:

- <p id="abc">试一试!</p>
- <script>
- var ele=document.getElementById("abc");
- ele.onclick=function(){
- console.log("ok");
- console.log(this); // this直接用
- };
- </script>

事件介绍
1、onload:
onload 属性开发中 只给 body元素加.这个属性的触发 标志着 页面内容被加载完成.应用场景: 当有些事情我们希望页面加载完立刻执行,那么可以使用该事件属性
script标签一般写在body标签的最下面,除非是文档加载之前就要运行的代码要放在head标签里

- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Title</title>
- <script>
- /*
- window.onload=function(){
- var ele=document.getElementById("ppp");
- ele.onclick=function(){
- alert(123)
- };
- };
- */
- function fun() {
- var ele=document.getElementById("ppp");
- ele.onclick=function(){
- alert(123)
- };
- }
- </script>
- </head>
- <body onload="fun()"> // body部分加载完成后再执行fun
- <p id="ppp">hello p</p>
- </body>
- </html>

2、onsubmit:
当表单在提交时触发. 该属性也只能给form元素使用.应用场景: 在表单提交前验证用户输入是否正确.如果验证失败.在该方法中我们应该阻止表单的提交

- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Title</title>
- <script>
- window.onload=function(){
- //阻止表单提交方式1().
- //onsubmit 命名的事件函数,可以接受返回值. 其中返回false表示拦截表单提交.其他为放行.
- var ele=document.getElementById("form");
- ele.onsubmit=function(event) {
- // alert("验证失败 表单不会提交!");
- // return false;
- // 阻止表单提交方式2 event.preventDefault(); ==>通知浏览器不要执行与事件关联的默认动作。
- alert("验证失败 表单不会提交!");
- event.preventDefault();
- }
- };
- </script>
- </head>
- <body>
- <form id="form">
- <input type="text"/>
- <input type="submit" value="点我!" />
- </form>
- </body>
- </html>

3、事件传播:
如果父标签绑定了事件,那么其子标签也会被绑定该事件,这是事件委托的方式,event.stopPropagation()可以防止子标签触发的事件向外传播,也就不会触发父标签的事件了

- <div id="abc_1" style="border:1px solid red;width:300px;height:300px;">
- <div id="abc_2" style="border:1px solid red;width:200px;height:200px;">
- </div>
- </div>
- <script type="text/javascript">
- document.getElementById("abc_1").onclick=function(){
- alert('111');
- };
- document.getElementById("abc_2").onclick=function(event){
- alert('222');
- event.stopPropagation(); //阻止事件向外层div传播.
- }
- </script>

事件委托的示例

- <!DOCTYPE html>
- <html lang="zh-CN">
- <head>
- <meta charset="UTF-8">
- <meta http-equiv="x-ua-compatible" content="IE=edge">
- <title>Title</title>
- </head>
- <body>
- <ul id="i1">
- <li>1</li>
- <li>2</li>
- <li>3</li>
- <li>4</li>
- <li>5</li>
- <li>6</li>
- <li>7</li>
- <li>8</li>
- <li>9</li>
- <li>10</li>
- </ul>
- <script>
- // 传统写法
- // var liEles = document.getElementsByTagName("li");
- // for (var i=0;i<liEles.length;i++){
- // liEles[i].onclick=function(){
- // alert(this.innerText);
- // }
- // }
- // 更好的方式
- var ulEle = document.getElementById("i1");
- ulEle.onclick=function(event){ // 把事件本身当成参数传进来
- // event.target 点击的目标
- alert(event.target.innerText);
- }
- </script>
- </body>
- </html>

4、onselect:

- <input type="text" placeholder="hahaha">
- <script>
- var ele=document.getElementsByTagName("input")[0];
- ele.onselect=function(){
- alert(123);
- }
- </script>

5、onchange:

- <select name="" id="">
- <option value="">111</option>
- <option value="">222</option>
- <option value="">333</option>
- </select>
- <script>
- var ele=document.getElementsByTagName("select")[0];
- ele.onchange=function(){
- alert(123);
- }
- </script>

onchange()事件 --> select联动的例子
1. selectEle.selectedIndex --> 获取当前选中的option的索引值
2. selectEle.options --> 获取所有的option选项,获取的是一个数组,里面的每个值都是一个option对象
3. selectEle.options.length=0 --> 清空所有的option选项
6、onkeydown:
Event 对象:Event 对象代表事件的状态,比如事件在其中发生的元素、键盘按键的状态、鼠标的位置、鼠标按钮的状态。
事件通常与函数结合使用,函数不会在事件发生前被执行!event对象在事件发生时系统已经创建好了,并且会在事件函数被调用时传给事件函数.我们获得仅仅需要接收一下即可.比如onkeydown,我们想知道哪个键被按下了,需要问下event对象的属性,这里就时KeyCode.

- <input type="text" id="t1"/>
- <script type="text/javascript">
- var ele=document.getElementById("t1");
- ele.onkeydown=function(e){
- e=e||window.event;
- var keynum=e.keyCode;
- var keychar=String.fromCharCode(keynum);
- alert(keynum+'----->'+keychar);
- };
- </script>

7、onmouseout与onmouseleave事件的区别

- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Title</title>
- <style>
- #container{
- width: 300px;
- }
- #title{
- cursor: pointer;
- background: #ccc;
- }
- #list{
- display: none;
- background:#fff;
- }
- #list div{
- line-height: 50px;
- }
- #list .item1{
- background-color: green;
- }
- #list .item2{
- background-color: rebeccapurple;
- }
- #list .item3{
- background-color: lemonchiffon;
- }
- </style>
- </head>
- <body>
- <p>先看下使用mouseout的效果:</p>
- <div id="container">
- <div id="title">使用了mouseout事件↓</div>
- <div id="list">
- <div class="item1">第一行</div>
- <div class="item2">第二行</div>
- <div class="item3">第三行</div>
- </div>
- </div>
- <script>
- // 1.不论鼠标指针离开被选元素还是任何子元素,都会触发 mouseout 事件。
- // 2.只有在鼠标指针离开被选元素时,才会触发 mouseleave 事件。
- var container=document.getElementById("container");
- var title=document.getElementById("title");
- var list=document.getElementById("list");
- title.onmouseover=function(){
- list.style.display="block";
- };
- container.onmouseleave=function(){ // 改为mouseout试一下
- list.style.display="none";
- };
- /*
- 因为mouseout事件是会冒泡的,也就是onmouseout事件可能被同时绑定到了container的子元素title和list
- 上,所以鼠标移出每个子元素时也都会触发我们的list.style.display="none";
- */
- /*
- 思考:
- if:
- list.onmouseout=function(){
- list.style.display="none";
- };
- 为什么移出第一行时,整个list会被隐藏?
- 其实是同样的道理,onmouseout事件被同时绑定到list和它的三个子元素item上,所以离开任何一个
- 子元素同样会触发list.style.display="none";
- */
- </script>
- </body>
- </html>

绑定多个事件

- <input type="button" value="点我" id="i1">
- <script>
- function f1() {
- alert(1);
- }
- function f2(){
- alert(2);
- }
- var i1Ele = document.getElementById("i1");
- // i1Ele.onclick=function () {
- // f1();
- // };
- // addEventlistener 绑定多个事件,不覆盖
- i1Ele.addEventListener("click",f1);
- i1Ele.addEventListener("click",f2);

节点操作
创建节点:
- createElement(标签名) :创建一个指定名称的元素
例:var tag=document.createElement(“input")
tag.setAttribute('type','text');
添加节点:
- 追加一个子节点(作为最后的子节点)
- somenode.appendChild(newnode)
- 把增加的节点放到某个节点的前边
- somenode.insertBefore(newnode,某个节点);
删除节点:
- removeChild():获得要删除的元素,通过父元素调用删除
替换节点:
- somenode.replaceChild(newnode, 某个节点);
拷贝节点
true会将子标签也拷贝,不加只会拷贝最外层
实例练习
1 左侧菜单

- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Title</title>
- <style>
- *{
- margin: 0;
- padding: 0;
- }
- .left{
- width: 20%;
- height: 500px;
- float: left;
- background-color: wheat;
- }
- .right{
- float: left;
- width: 80%;
- height: 500px;
- background-color: lightgray;
- }
- .title{
- text-align: center;
- line-height: 40px;
- background-color: #0e90d2;
- color: white;
- }
- .item{
- padding: 10px;
- }
- .hide{
- display: none;
- }
- </style>
- </head>
- <body>
- <div class="outer">
- <div class="left">
- <div class="item">
- <div class="title">菜单一</div>
- <ul class="con">
- <li>111</li>
- <li>111</li>
- <li>111</li>
- </ul>
- </div>
- <div class="item">
- <div class="title">菜单二</div>
- <ul class="con hide">
- <li>222</li>
- <li>222</li>
- <li>222</li>
- </ul>
- </div>
- <div class="item">
- <div class="title">菜单三</div>
- <ul class="con hide">
- <li>333</li>
- <li>333</li>
- <li>333</li>
- </ul>
- </div>
- </div>
- <div class="right"></div>
- </div>
- <script>
- var eles_title=document.getElementsByClassName("title");
- for (var i=0;i<eles_title.length;i++){
- eles_title[i].onclick=function(){
- this.nextElementSibling.classList.remove("hide");
- for(var j=0;j<eles_title.length;j++){
- if (eles_title[j]!=this){
- eles_title[j].nextElementSibling.classList.add("hide")
- }
- }
- }
- }
- </script>
- </body>
- </html>

2 搜索框

- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Title</title>
- <script>
- function Focus(){
- var input=document.getElementById("ID1");
- if (input.value=="请输入用户名"){
- input.value="";
- }
- }
- function Blurs(){
- var ele=document.getElementById("ID1");
- var val=ele.value;
- if(!val.trim()){
- ele.value="请输入用户名";
- }
- }
- </script>
- </head>
- <body>
- <input id="ID1" type="text" value="请输入用户名" onblur="Blurs()" onfocus="Focus()">
- </body>
- </html>

3 模态对话框

- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Title</title>
- <style>
- .back{
- background-color: white;
- height: 2000px;
- }
- .shade{
- position: fixed;
- top: 0;
- bottom: 0;
- left:0;
- right: 0;
- background-color: grey;
- opacity: 0.4;
- }
- .hide{
- display: none;
- }
- .models{
- position: fixed;
- top: 50%;
- left: 50%;
- margin-left: -100px;
- margin-top: -100px;
- height: 200px;
- width: 200px;
- background-color: wheat;
- }
- </style>
- </head>
- <body>
- <div class="back">
- <input class="c" type="button" value="click">
- </div>
- <div class="shade hide handles"></div>
- <div class="models hide handles">
- <input class="c" type="button" value="cancel">
- </div>
- <script>
- var eles=document.getElementsByClassName("c");
- var handles=document.getElementsByClassName("handles");
- for(var i=0;i<eles.length;i++){
- eles[i].onclick=function(){
- if(this.value=="click"){
- for(var j=0;j<handles.length;j++){
- handles[j].classList.remove("hide");
- }
- }
- else {
- for(var j=0;j<handles.length;j++){
- handles[j].classList.add("hide");
- }
- }
- }
- }
- </script>
- </body>
- </html>

4 表格案例

- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Title</title>
- </head>
- <body>
- <button class="select_all">全选</button>
- <button class="select_reverse">反选</button>
- <button class="cancel">取消</button>
- <hr>
- <table class="server_table" border="2px" cellspacing="2px">
- <tr>
- <td><input type="checkbox" class="item"></td>
- <td>111</td>
- <td>111</td>
- <td>111</td>
- </tr>
- <tr>
- <td><input type="checkbox" class="item"></td>
- <td>222</td>
- <td>222</td>
- <td>222</td>
- </tr>
- <tr>
- <td><input type="checkbox" class="item"></td>
- <td>333</td>
- <td>333</td>
- <td>333</td>
- </tr>
- <tr>
- <td><input type="checkbox" class="item"></td>
- <td>444</td>
- <td>444</td>
- <td>444</td>
- </tr>
- </table>
- <script>
- /*
- var ele_all=document.getElementsByClassName("select_all")[0];
- var ele_reverse=document.getElementsByClassName("select_reverse")[0];
- var ele_cancel=document.getElementsByClassName("cancel")[0];
- var input_arr=document.getElementsByClassName("item");
- ele_all.onclick=function(){
- for(var i=0;i<input_arr.length;i++){
- console.log(input_arr[i]);
- var input=input_arr[i];
- input.checked=true;
- }
- };
- ele_cancel.onclick=function(){
- for(var i=0;i<input_arr.length;i++){
- console.log(input_arr[i]);
- var input=input_arr[i];
- input.checked=false;
- }
- };
- ele_reverse.onclick=function(){
- for(var i=0;i<input_arr.length;i++){
- console.log(input_arr[i]);
- var input=input_arr[i];
- if(input.checked){
- input.checked=false;
- }
- else{
- input.checked=true;
- }
- }
- };
- */
- var input_arr=document.getElementsByClassName("item");
- var button_arr=document.getElementsByTagName("button");
- for(var i=0;i<button_arr.length;i++){
- button_arr[i].onclick=function(){
- for (var j=0;j<input_arr.length;j++){
- var inp=input_arr[j]
- if(this.innerText=="全选"){
- console.log("ok");
- inp.checked=true;
- }
- else if(this.innerText=="取消"){
- inp.checked=false;
- }
- else {
- if(inp.checked){
- inp.checked=false;
- }else {
- inp.checked=true;
- }
- }
- }
- }
- }
- </script>
- </body>
- </html>

5 select移动

- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Title</title>
- <style>
- .outer{
- margin: 0 auto;
- background-color: darkgray;
- width: 80%;
- height: 600px;margin-top: 30px;
- word-spacing: -5px;
- }
- #left{
- display: inline-block;
- width: 100px ;
- height: 140px;
- background-color: wheat;
- text-align: center;
- }
- #choice{
- display: inline-block;
- height: 140px;
- background-color: darkolivegreen;
- vertical-align: top;
- padding:0 5px;
- }
- #choice button{
- margin-top: 20px;
- }
- #right{
- display: inline-block;
- width: 100px ;
- height: 140px;
- background-color: wheat;
- text-align: center;
- line-height: 140px;
- }
- </style>
- </head>
- <body>
- <div class="outer">
- <select multiple="multiple" size="5" id="left">
- <option>红楼梦</option>
- <option>西游记</option>
- <option>水浒传</option>
- <option>JinPingMei</option>
- <option>三国演义</option>
- </select>
- <span id="choice">
- <button id="choose_move"> > </button><br>
- <button id="all_move"> >> </button>
- </span>
- <select multiple="multiple" size="10" id="right">
- <option>放风筝的人</option>
- </select>
- </div>
- <script>
- var choose_move=document.getElementById("choose_move");
- var all_move=document.getElementById("all_move");
- var right=document.getElementById("right");
- var left=document.getElementById("left");
- var options=left.options;
- choose_move.onclick=function(){
- for (var i=0; i<options.length;i++){
- var option=options[i];
- if(option.selected==true){
- // var news=option.cloneNode(true);
- // console.log(news);
- right.appendChild(option);
- i--;
- }
- }
- };
- all_move.onclick=function(){
- for (var i=0; i<options.length;i++){
- var option=options[i];
- right.appendChild(option);
- i--;
- };
- };
- /*
- var buttons=document.getElementsByTagName("button");
- for(var i=0;i<buttons.length;i++) {
- buttons[i].onclick = function () {
- for (var i = 0; i < options.length; i++) {
- var option = options[i];
- if (this.innerText == ">") {
- if (option.selected == true) {
- // var news=option.cloneNode(true);
- // console.log(news);
- right.appendChild(option);
- i--;
- }
- } else {
- right.appendChild(option);
- i--;
- }
- }
- };
- }
- */
- </script>
- </body>
- </html>

6 二级联动

- <select id="province">
- <option>请选择省:</option>
- </select>
- <select id="city">
- <option>请选择市:</option>
- </select>
- <script>
- data={"河北省":["廊坊","邯郸"],"北京":["朝阳区","海淀区"]};
- var p=document.getElementById("province");
- var c=document.getElementById("city");
- for(var i in data){
- var option_pro=document.createElement("option");
- option_pro.innerHTML=i;
- p.appendChild(option_pro);
- }
- p.onchange=function(){
- pro=(this.options[this.selectedIndex]).innerHTML;
- citys=data[pro];
- c.options.length=0;
- for (var i in citys){
- var option_city=document.createElement("option");
- option_city.innerHTML=citys[i];
- c.appendChild(option_city);
- }
- }
- </script>

7 跑马灯与tab切换

- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>tab</title>
- <style>
- *{margin:0; padding:0; list-style:none;}
- body{
- font-family: "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei", "\9ED1\4F53", Arial, sans-serif;
- }
- h3{
- text-align: center;
- color:darkcyan;
- margin-top: 30px;
- letter-spacing: 5px;
- }
- .box{
- width: 1000px;
- margin:50px auto 0px;
- }
- #title{
- line-height: 40px;
- background-color: rgb(247,247,247);
- font-size: 16px;
- font-weight: bold;
- color: rgb(102,102,102);
- }
- #title span{
- float: left;
- width: 166px;
- text-align: center;
- }
- #title span:hover{
- /*color: black;*/
- cursor: pointer;
- }
- #content{
- margin-top: 20px;
- }
- #content li{
- width: 1050px;
- display: none;
- background-color: rgb(247,247,247);
- }
- #content li div{
- width: 156px;
- margin-right: 14px;
- float: left;
- text-align: center;
- }
- #content li div a{
- font-size: 14px;
- color: black;
- line-height: 14px;
- /* float: left;*/
- display: inline-block;
- margin-top: 10px;
- }
- #content li a:hover{
- color: #B70606;
- }
- #content li div span{
- font-size: 16px;
- line-height: 16px;
- /*float: left;*/
- display: block;
- color: rgb(102,102,102);
- margin-top: 10px;
- }
- #content img{
- float: left;
- width: 155px;
- height: 250px;
- }
- #title .select{
- background-color: #2459a2;
- color: white;
- border-radius: 10%;
- }
- #content .show{
- display: block;
- }
- .show span{
- color: red!important;
- font-size: 30px;
- }
- </style>
- </head>
- <body>
- <h3 id="wel">京东商城欢迎您</h3>
- <!-- direction="right up down left" -->
- <!-- behavior:滚动方式(包括3个值:scroll、slide、alternate) -->
- <!-- 说明:scroll:循环滚动,默认效果;slide:只滚动一次就停止;alternate:来回交替进行滚动。 -->
- <!-- scrollamount="5" 滚动速度 -->
- <marquee behavior="scroll" direction="right">欢迎您苑昊先生</marquee>
- <script>
- function test(){
- var mywel = document.getElementById("wel");
- var content = mywel.innerText;
- var f_content = content.charAt(0);
- var l_content = content.substring(1,content.length);
- var new_content = l_content + f_content;
- mywel.innerText = new_content;
- }
- // setInterval("test();", 500);
- </script>
- <div class="box">
- <p id="title">
- <span class="select">家用电器</span>
- <span>家具</span>
- <span>汽车</span>
- <span>食品</span>
- <span>女鞋</span>
- <span>医疗保健</span>
- </p>
- <ul id="content">
- <li class="show">
- <div><img src="https://img10.360buyimg.com/n1/s450x450_jfs/t4786/325/2470647304/119102/9e1a4ed5/59005841Nd786a8df.jpg" alt="冰箱"><a href="#">容声(Ronshen)冰箱</a><span>价格:5600</span></div>
- <div><img src="https://img12.360buyimg.com/n1/s450x450_jfs/t3037/347/1290968859/201366/7c1028a0/57c00194N9d0a54c6.jpg" alt="洗衣机"><a href="#">海尔洗衣机</a><span>价格:5400</span></div>
- <div><img src="https://img11.360buyimg.com/n1/jfs/t3289/128/2393835119/236360/af1d283b/57e0f300N53dde603.jpg" alt="电饭煲"><a href="#">福库(CUCKOO)电饭煲</a><span>价格:3999</span></div>
- <div><img src="https://img13.360buyimg.com/n1/jfs/t3235/137/2361713777/152258/a6908440/57e098c2N44a90a5d.jpg" alt="智能电视"><a href="#">三星智能电视</a><span>价格:8999</span></div>
- <div><img src="https://img10.360buyimg.com/n1/jfs/t2053/101/1391591157/215066/572e131b/5696ee9bN2376492d.jpg" alt="净水器"><a href="#">净水器</a><span>价格:1300</span></div>
- <div><img src="https://img14.360buyimg.com/n1/jfs/t3175/78/2357430273/262835/9a8e7f65/57e0a3e9Nbda39dd2.jpg" alt="空气净化器"><a href="#">空气净化器</a><span>价格:5300</span></div>
- </li>
- <li>
- <div><img src="https://img12.360buyimg.com/n1/jfs/t1948/172/2877517581/556924/682eb107/56f63dc8Naddf77e5.jpg" alt="沙发"><a href="#">沙发</a><span>价格:2900</span></div>
- <div><img src="https://img12.360buyimg.com/n1/jfs/t1948/172/2877517581/556924/682eb107/56f63dc8Naddf77e5.jpg" alt="沙发"><a href="#">沙发</a><span>价格:2900</span></div>
- <div><img src="https://img12.360buyimg.com/n1/jfs/t1948/172/2877517581/556924/682eb107/56f63dc8Naddf77e5.jpg" alt="沙发"><a href="#">沙发</a><span>价格:2900</span></div>
- <div><img src="https://img12.360buyimg.com/n1/jfs/t1948/172/2877517581/556924/682eb107/56f63dc8Naddf77e5.jpg" alt="沙发"><a href="#">沙发</a><span>价格:2900</span></div>
- <div><img src="https://img12.360buyimg.com/n1/jfs/t1948/172/2877517581/556924/682eb107/56f63dc8Naddf77e5.jpg" alt="沙发"><a href="#">沙发</a><span>价格:2900</span></div>
- <div><img src="https://img12.360buyimg.com/n1/jfs/t1948/172/2877517581/556924/682eb107/56f63dc8Naddf77e5.jpg" alt="沙发"><a href="#">沙发</a><span>价格:2900</span></div>
- </li>
- <li>
- <div><img src="http://img11.360buyimg.com/n1/jfs/t4969/76/45396935/144539/347153d4/58d9cff4N36872ad6.jpg" alt="长安汽车"><a href="#">长安汽车</a><span>价格:12900</span></div>
- <div><img src="http://img11.360buyimg.com/n1/jfs/t4969/76/45396935/144539/347153d4/58d9cff4N36872ad6.jpg" alt="长安汽车"><a href="#">长安汽车</a><span>价格:12900</span></div>
- <div><img src="http://img11.360buyimg.com/n1/jfs/t4969/76/45396935/144539/347153d4/58d9cff4N36872ad6.jpg" alt="长安汽车"><a href="#">长安汽车</a><span>价格:12900</span></div>
- <div><img src="http://img11.360buyimg.com/n1/jfs/t4969/76/45396935/144539/347153d4/58d9cff4N36872ad6.jpg" alt="长安汽车"><a href="#">长安汽车</a><span>价格:12900</span></div>
- <div><img src="http://img11.360buyimg.com/n1/jfs/t4969/76/45396935/144539/347153d4/58d9cff4N36872ad6.jpg" alt="长安汽车"><a href="#">长安汽车</a><span>价格:12900</span></div>
- <div><img src="http://img11.360buyimg.com/n1/jfs/t4969/76/45396935/144539/347153d4/58d9cff4N36872ad6.jpg" alt="长安汽车"><a href="#">长安汽车</a><span>价格:12900</span></div>
- </li>
- <li>
- <div><img src="https://img14.360buyimg.com/n1/jfs/t4414/110/2582917360/207971/b7e129ad/58f0ee1fN94425de1.jpg" alt="嘉兴粽子"><a href="#">嘉兴粽子</a><span>价格:1</span></div>
- <div><img src="https://img14.360buyimg.com/n1/jfs/t4414/110/2582917360/207971/b7e129ad/58f0ee1fN94425de1.jpg" alt="嘉兴粽子"><a href="#">嘉兴粽子</a><span>价格:1</span></div>
- <div><img src="https://img14.360buyimg.com/n1/jfs/t4414/110/2582917360/207971/b7e129ad/58f0ee1fN94425de1.jpg" alt="嘉兴粽子"><a href="#">嘉兴粽子</a><span>价格:1</span></div>
- <div><img src="https://img14.360buyimg.com/n1/jfs/t4414/110/2582917360/207971/b7e129ad/58f0ee1fN94425de1.jpg" alt="嘉兴粽子"><a href="#">嘉兴粽子</a><span>价格:1</span></div>
- <div><img src="https://img14.360buyimg.com/n1/jfs/t4414/110/2582917360/207971/b7e129ad/58f0ee1fN94425de1.jpg" alt="嘉兴粽子"><a href="#">嘉兴粽子</a><span>价格:1</span></div>
- <div><img src="https://img14.360buyimg.com/n1/jfs/t4414/110/2582917360/207971/b7e129ad/58f0ee1fN94425de1.jpg" alt="嘉兴粽子"><a href="#">嘉兴粽子</a><span>价格:1</span></div>
- </li>
- <li>
- <div><img src="https://img14.360buyimg.com/n1/jfs/t3079/298/5759209435/92674/14818594/587f1c33N53e5d2a9.jpg" alt="星期六"><a href="#">星期六</a><span>价格:439</span></div>
- <div><img src="https://img14.360buyimg.com/n1/jfs/t3079/298/5759209435/92674/14818594/587f1c33N53e5d2a9.jpg" alt="星期六"><a href="#">星期六</a><span>价格:439</span></div>
- <div><img src="https://img14.360buyimg.com/n1/jfs/t3079/298/5759209435/92674/14818594/587f1c33N53e5d2a9.jpg" alt="星期六"><a href="#">星期六</a><span>价格:439</span></div>
- <div><img src="https://img14.360buyimg.com/n1/jfs/t3079/298/5759209435/92674/14818594/587f1c33N53e5d2a9.jpg" alt="星期六"><a href="#">星期六</a><span>价格:439</span></div>
- <div><img src="https://img14.360buyimg.com/n1/jfs/t3079/298/5759209435/92674/14818594/587f1c33N53e5d2a9.jpg" alt="星期六"><a href="#">星期六</a><span>价格:439</span></div>
- <div><img src="https://img14.360buyimg.com/n1/jfs/t3079/298/5759209435/92674/14818594/587f1c33N53e5d2a9.jpg" alt="星期六"><a href="#">星期六</a><span>价格:439</span></div>
- </li>
- <li>
- <div><img src="https://img12.360buyimg.com/n1/jfs/t5755/127/1139389729/356866/99d4e869/5923e410Nb2983f70.jpg" alt="汇仁 肾宝片"><a href="#">汇仁 肾宝片</a><span>价格:322</span></div>
- <div><img src="https://img12.360buyimg.com/n1/jfs/t5755/127/1139389729/356866/99d4e869/5923e410Nb2983f70.jpg" alt="汇仁 肾宝片"><a href="#">汇仁 肾宝片</a><span>价格:322</span></div>
- <div><img src="https://img12.360buyimg.com/n1/jfs/t5755/127/1139389729/356866/99d4e869/5923e410Nb2983f70.jpg" alt="汇仁 肾宝片"><a href="#">汇仁 肾宝片</a><span>价格:322</span></div>
- <div><img src="https://img12.360buyimg.com/n1/jfs/t5755/127/1139389729/356866/99d4e869/5923e410Nb2983f70.jpg" alt="汇仁 肾宝片"><a href="#">汇仁 肾宝片</a><span>价格:322</span></div>
- <div><img src="https://img12.360buyimg.com/n1/jfs/t5755/127/1139389729/356866/99d4e869/5923e410Nb2983f70.jpg" alt="汇仁 肾宝片"><a href="#">汇仁 肾宝片</a><span>价格:322</span></div>
- <div><img src="https://img12.360buyimg.com/n1/jfs/t5755/127/1139389729/356866/99d4e869/5923e410Nb2983f70.jpg" alt="汇仁 肾宝片"><a href="#">汇仁 肾宝片</a><span>价格:322</span></div>
- </li>
- </ul>
- </div>
- <script>
- var title=document.getElementById('title');
- var content=document.getElementById('content');
- var category=title.getElementsByTagName('span');
- var item=content.getElementsByTagName('li');
- for (var i = 0; i < category.length; i++) {
- category[i].index=i;
- category[i].onclick=function(){
- for (var j = 0; j < category.length; j++) {
- category[j].className='';
- item[j].className='';
- }
- this.className='select';
- item[this.index].className='show';
- }
- }
- </script>
- </body>
- </html>
BOM对象,math对象document对象的属性和操作和 事件的基本操作的更多相关文章
- dom对象详解--document对象(一)
document对象 Document对象代表整个html文档,可用来访问页面中的所有元素,是最复杂的一个dom对象,可以说是学习好dom编程的关键所在. Document对象是window对象的一 ...
- dom对象详解--document对象(三)
form对象 form对象代表一个HTML表单,在HTML文档中<form>每出现一次,form对象就会被创建.从dom对象层次图看,document.forms对象是当前文档所有for ...
- dom对象详解--document对象(二)
dom对象详解--style对象 style对象 style对象和document对象下的集合对象styleSheets有关系,styleSheets是文档中所有style对象的集合,这里讲解的 ...
- Html 内嵌 选择器属性 Dom操作 JavaScript 事件
HTML标签: 一.通用标签(一般标签) 1.格式控制标签 <font color="#6699aa" face="楷体" size="24&q ...
- javascript document对象 第21节
<html> <head> <title>DOM对象</title> <style type="text/css"> t ...
- 【使用 DOM】使用 Document 对象
Document 对象时通往DOM功能的入口,它向你提供了当前文档的信息,以及一组可供探索.导航.搜索或操作结构与内容的功能. 我们通过全局变量document访问Document对象,它是浏览器为我 ...
- 【温故而知新-Javascript】使用 Document 对象
Document 对象时通往DOM功能的入口,它向你提供了当前文档的信息,以及一组可供探索.导航.搜索或操作结构与内容的功能. 我们通过全局变量document访问Document对象,它是浏览器为我 ...
- HTML DOM 知识点整理(一)—— Document对象
一.DOM对象 DOM对象整体包括: HTML DOM Document对象 HTML DOM 元素对象 HTML DOM 属性对象 HTML DOM 事件对象 HTML DOM Console 对象 ...
- R入门(二)-对象以及它们的模式和属性
对象以及它们的模式和属性 R操作的实体在技术上说是对象.R的对象类型包括数值型,复数型,逻辑型,字符型和原味型. “原子”型对象:对象的元素都是一样的类型或模式,如逻辑向量和字符串向量. 列表对象:列 ...
随机推荐
- lua语言介绍
什么是Lua Lua是一个小巧的脚本语言. 是巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)里的一个研究小组,由Rober ...
- android之ViewPager修改滑动速度
在android中,使用过viewpager的人都清楚,我们如果使用viewpager进行滑动时,如果通过手指滑动来进行的话,可以根据手指滑动的距离来实现,但是如果通过setCurrentItem函数 ...
- HttpClient+jsoup登录+解析 163邮箱
找了几个,只有这个靠谱,用的是httpclient4,另外还需要commons-lang和jsoup包 http://jsoup.org/ http://www.oschina.net/code/sn ...
- python笔记8 - excel操作
前提: python操作excel需要使用的模块有xlrd.xlwt.xlutils.对excel进行读.写.更新操作.操作excel时需要先导入这些模块,demo如下: excel-读操作知识点: ...
- Spark源码分析(四)-Job提交过程
原创文章,转载请注明: 转载自http://www.cnblogs.com/tovin/p/3903478.html 本文将以一个简单的WordCount为例来看看Job的提交过程
- uGUI动态加载控件位置错误
最近在使用uGUI时遇到了一个问题,在此记录一下.在Canvas的Render Mode设置为Screen Space-Overlay模式时,动态加载控件是不会发生问题的.但是在Screen Spac ...
- springboot如何直接读取webapp下页面?
公司改用springboot的时候,将页面相关的文件都放在了src/main/webapp下,我直接通过main方式启动的时候,无法读取到src/mian/webapp下文件,但是通过spring-b ...
- iOS-UIScrollView拉伸效果
解决办法: 比如登录界面是可以上下拉伸的(微信),在ScrollView里调用一下这个方法即可. scrollView.alwaysBounceVertical = YES;
- 【BZOJ4152】[AMPPZ2014]The Captain 最短路
[BZOJ4152][AMPPZ2014]The Captain Description 给定平面上的n个点,定义(x1,y1)到(x2,y2)的费用为min(|x1-x2|,|y1-y2|),求从1 ...
- iOS 7.1 UITapGestureRecognizer 不好用的解决办法
UITapGestureRecognizer *tap3 = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(o ...