标签:key eth on() 其他 按钮 样式 调用 数值 time
导航按钮JS
var odiv =document.getElementById(‘nav‘);
var listOfbtn = odiv.getElementsByTagName(‘button‘);
for( var i = 0;i < listOfbtn.length;i++){
listOfbtn[i].index =i;
listOfbtn[i].onclick = function(){
for(var j = 0;j < listOfbtn.length;j++){
listOfbtn[j].className =‘btn‘;
}
this.className =‘btn active‘;
}
}
轮播按钮
var odiv2 =document.getElementById(‘lunBobtn‘);
var listOfbtn2 = odiv2.getElementsByTagName(‘div‘);
for( var i = 1;i < listOfbtn2.length-1;i++){
listOfbtn2[i].index =i;
listOfbtn2[i].onmouseover = function(){
for(var j = 1;j < listOfbtn2.length-1;j++){
listOfbtn2[j].className = ‘lunBobtn1‘;
}
this.className = ‘lunBobtn1 lunBobtn1-active‘;
};
};
for( var i = 1;i < listOfbtn2.length-1;i++){
listOfbtn2[i].index =i;
listOfbtn2[i].onmouseout = function(){
listOfbtn2[1].className = ‘lunBobtn1 lunBobtn1-active‘;
listOfbtn2[2].className = ‘lunBobtn1‘;
listOfbtn2[3].className = ‘lunBobtn1‘;
};
};
    var odiv=document.getElementById(‘div1‘);//获取div
    var btn=odiv.getElementsByTagName(‘input‘);//获取div下的input
    var div2=odiv.getElementsByTagName(‘div‘) ;//获取div下的div
    for(i=0;i<btn.length;i++)//循环每个按钮
    {
        btn[i].index=i;
//btn[i]是指定button的第i个按钮;为该按钮添加一个index属性,并将index的值设置为i。就是给每一个btn命名index,并赋值i.
        btn[i].onclick=function()//按钮的第i个点击事件
        {
            for(i=0;i<btn.length;i++)//循环去掉button的样式,把div隐藏
            {
                btn[i].className=‘‘;//清空按钮的样式
                div2[i].style.display=‘none‘;//隐藏div
            }
            this.className=‘active‘;//自身添加active
            div2[this.index].style.display=‘block‘;//this.index是当前div
        }
    }
html代码
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>作业1</title>
  <style type="text/css">
    .box {
      width: 300px;
      height: 300px;
      background-color: green;
      margin-top: 20px;
      margin-left: 20px;
      float: left;
    }
    .box.selected {
      background-color: red;
    }
  </style>
</head>
<body>
  <div id="container">
    <div class="box large"></div>
    <div class="box large"></div>
    <div class="box large"></div>
    <div class="box large"></div>
    <div class="box large small"></div>
    <div class="box large"></div>
    <div class="box large small"></div>
    <div class="box large"></div>
    <div class="box large"></div>
    <div class="box large"></div>
  </div>
  <script src="./js/作业1.js"></script>
</body>
</html>
JS代码
(function() {
  var listOfDiv = document.getElementById(‘container‘).getElementsByTagName(‘div‘);
  // 当前所选中的div的引用
  var selectedDiv = null;
  for(var i = 0; i < listOfDiv.length; i++) {
    listOfDiv[i].onclick = function() {
      if(selectedDiv === this) {
        selectedDiv.className = deleteClassName(selectedDiv.className, ‘selected‘);
        selectedDiv = null;
      } else {
        if(selectedDiv !== null) {
          selectedDiv.className = deleteClassName(selectedDiv.className, ‘selected‘);
        }
        this.className = this.className + ‘ selected‘;
        selectedDiv = this;
      }
    };
  }
  function deleteClassName(className, deleteClass) {
    var listOfClass = className.split(‘ ‘);
    var index = listOfClass.indexOf(deleteClass);
    // 要删除的类名在原类名字符串中本来就没有存在
    if(index === -1) {
      return className;
    }
    // 要删除的类名在原类名字符串中存在
    listOfClass.splice(index, 1);
    var newClassName = listOfClass.join(‘ ‘);
    return newClassName;
  };
})();
html代码
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>作业2</title>
  <style type="text/css">
    * {
      margin: 0;
      padding: 0;
    }
    #container {
      position: relative;
      left: 0;
      top: 0;
      width: 430px;
      height: 430px;
      overflow: hidden;
    }
    #wrap {
      position: absolute;
      left: 0;
      top: 0;
      width: 1720px;
      height: 430px;
      overflow: hidden;
    }
    #wrap img {
      float: left;
    }
    #nav {
      width: 150px;
      height: 30px;
      list-style: none;
      position: absolute;
      bottom: 40px;
      left: 0;
      right: 0;
      margin: auto;
    }
    #nav>li {
      width: 30px;
      height: 30px;
      border-radius: 30px;
      background-color: rgba(255, 255, 255, 0.6);
      float: left;
      margin-left: 10px;
      cursor: pointer;
    }
    #nav>li:first-child {
      margin-left: 0;
    }
  </style>
</head>
<body>
  <div id="container">
    <div id="wrap">
      <img src="./images/imgA_2.jpg">
      <img src="./images/imgB_2.jpg">
      <img src="./images/imgC_2.jpg">
      <img src="./images/imgD_2.jpg">
    </div>
    <ul id="nav">
      <li></li>
      <li></li>
      <li></li>
      <li></li>
    </ul>
  </div>
  <script src="./js/作业2.js"></script>
</body>
</html>
JS代码
(function() {
  var wrapDiv = document.getElementById(‘wrap‘);
  var listOfLi = document.getElementById(‘nav‘).getElementsByTagName(‘li‘);
  var left = 0;
  function animateToImage(iamgeIndex) {
    // 动画最终的left值
    var targetLeft = iamgeIndex * (-430);
    var animateTime = 300;
    // speed为每次需要变化的距离
    var speed = (targetLeft - left) / (animateTime / 1000 * 60);
    console.log(speed);
    var timer = setInterval(function() {
      // 判断setInterval结束条件
      // 结束条件分为向左移动和向右移动
      if(speed >= 0 && left >= targetLeft) {
        left = targetLeft;
        wrapDiv.style.left = left + ‘px‘;
        clearInterval(timer);
      } else if(speed < 0 && left <= targetLeft) {
        left = targetLeft;
        wrapDiv.style.left = left + ‘px‘;
        clearInterval(timer);
      } else {
        wrapDiv.style.left = left + ‘px‘;
        left = left + speed;
      }
    }, 16.67);
  }
  for(var i = 0; i < listOfLi.length; i++) {
    listOfLi[i].index = i;
    listOfLi[i].onclick = function() {
      animateToImage(this.index);
    };
  }
})();
解决这一兼容问题的代码
    var text;
    if(div.textContent !== undefined){
    text = div.textContent
    } else{
    text = div.innerText
    }
区别:
获取的时候:innerHTML是获取标签中的全部内容 包括标签,textContent 知识获取的文本
赋值的时候:innerHTML 是把赋值中的标签转换成真正意义的标签进行赋值,而textContent会把赋值中的标签 转换成文本 进行赋值。
6.1 行内样式 设置和获取: object.style.attr 示例: hover
    html:
    <a id="one" href="#" style="color: red; padding: 3px;">跳转</a>
    javascript:
    (function() {
        var one = document.getElementById("one");
        one.onmouseover = function() {
            this.style.color = "blue";
            this.style.backgroundColor = "red";
        };
        one.onmouseout = function() {
            this.style.color = "red";
            this.style.backgroundColor = "blue";
        };
    }());
6.2 css层叠样式
通过 className 修改样式
获取或修改某个属性的值(兼容性问题)
| 属性 | 描述 | 
|---|---|
| document.styleSheets | 返回样式表的集合 | 
| document.styleSheets[index].rules / document.styleSheets[index].cssRules | 返回样式表中选择器的集合 | 
| document.styleSheets[index].rules[index].style.attr | 查找样式表中的样式属性(**ie chrom**) | 
| document.styleSheets[index].cssRules[index].style.attr | 查找样式表中的样式属性(**firefox**) | 
document.styleSheets[index].insertRule("selector{attr:value}", index);
document.styleSheets[index].deleteRule(index);
document.styleSheets[index].addRule("selector","attr:value", index);
document.styleSheets[index].removeRule(index);
6.3 获取最终样式(只能获取,不能操作)
object.currentStyle.attr ( IE )
window.getComputedStyle(object,null).attr ( W3C )
6.4 获得元素尺寸(可直接运算)
clientWidth/clientHeight: 元素可视部分的高度和宽度(width + padding)
offsetWidth/offsetHeight: 元素实际的高度和宽度(width+padding+border)
DOM可以将任何HTML或者XML文档描绘成一个有多层节点构成的结构.
HTML或者XML页面中的每个组成部分都是某种类型的节点,这些节点有包含着不同类型的数据.
以下面的HTML为例
<html> <head> <title>Sample Page</title> </head> <body> <p>Hello, World!</p> </body> </html>
文档节点是每个文档的根节点.在HTML中,文档节点只有一个子节点,即元素,我们称之为文档元素.文档元素是文档的最外层元素,文档中的其他所有元素都包含在文档元素中.每个文档只能有一个文档元素.在HTML页面中,文档元素始终都是<html>元素.在XML中,没有预定义的元素,因此任何元素都可能成为文档元素.
每一段标记都可以通过树中的一个节点来表示:HTML元素通过元素节点表示,特性(attribute)通过特性节点表示,文档类型通过文档类型节点表示,而注释则通过注释节点表示.总共有12种节点类型,这些类型都继承自一个基类型.
每个节点都有一个nodeType属性,用于表明节点的类型.节点类型由Node类型中定义的下列12个数值常量来表示,任何节点类型必居其一:
通过比较上面这些常量,可以很容易地确定节点的类型
javascript
if(someNode.nodeType == 1) {
    alert(‘这个节点是一个元素节点‘);
}
节点间的各种关系可以用传统的家族关系来描述,相当于把文档树比喻成家谱。在HTML中,可以将元素看成是元素的子元素;相应地,也就可以将元素看成是元素的父元素。而元素,则可以看成是元素的兄弟元素(同胞元素),因为它们都是同一个父元素的直接子元素.
someNode.parentNode: 获取该元素父节点someNode.childNodes: 获取对象所有的子节点,只包含次级节点someNode.firstChild: 获取该元素第一个子节点someNode.lastChild: 获取该元素最后一个子节点someNode.nextSibling: 获取该下一个兄弟节点someNode.previousSibling: 获取该元素上一个兄弟节点appendChild(childNode)操作节点中最常用的方法是appendChild(),用于向childNodes列表的末尾添加一个节点.添加完成后,appendChild()会返回新增的节点.
使用方法:
javascript
someNode.appendChild(anotherNode);
如果传入到appendChild()中的节点已经是文档的一部分了,那结果就是将该节点从原来的位置转移到新位置.因此,如果在调用appendChild()时传入了父节点的第一个子节点,那么该节点就会成为父节点的最后一个子节点.
javascript
//someNode 有多个子节点
var returnedNode = someNode.appendChild(someNode.firstChild);
alert(returnedNode == someNode.firstChild); //false
alert(returnedNode == someNode.lastChild); //true
insertBefore(childNode, nextNode)如果需要把节点放在childNodes列表中某个特定的位置上,而不是放在末尾,那么可以使用insertBefore()方法。这个方法接受两个参数:要插入的节点和作为参照的节点。插入节点后,被插入的节点会变成参照节点的前一个同胞节点(previousSibling),同时被方法返回。如果参照节点是null,则insertBefore()与appendChild()执行相同的操作.
javascript
// 插入后成为最后一个子节点
returnedNode = someNode.insertBefore(newNode, null);
alert(newNode == someNode.lastChild); //true
// 插入后成为第一个子节点
var returnedNode = someNode.insertBefore(newNode, someNode.firstChild);
alert(returnedNode == newNode); //true
alert(newNode == someNode.firstChild); //true
// 插入到最后一个子节点前面
returnedNode = someNode.insertBefore(newNode, someNode.lastChild);
alert(newNode == someNode.childNodes[someNode.childNodes.length - 2]); //true
replaceChild(newNode, removeNode)replaceChild()方法接受的两个参数是:要插入的节点和要替换的节点.要替换的节点将由这个 方法返回并从文档树中被移除,同时由要插入的节点占据其位置.
javascript
// 替换第一个子节点
var returnedNode = someNode.replaceChild(newNode, someNode.firstChild);
// 替换最后一个子节点
returnedNode = someNode.replaceChild(newNode, someNode.lastChild);
removeChild(removeNode)如果只想移除而非替换节点,可以使用removeChild()方法.这个方法接受一个参数,即要移除的节点。被移除的节点将成为方法的返回值.
javascript
// 移除第一个子节点
var formerFirstChild = someNode.removeChild(someNode.firstChild);
// 移除最后一个子节点
var formerLastChild = someNode.removeChild(someNode.lastChild);
前面介绍的四个方法操作的都是某个节点的子节点,也就是说,要使用这几个方法必须先取得父节点(使用 parentNode属性).另外,并不是所有类型的节点都有子节点,如果在不支持子节点的节点上调用了这些方法,将会导致错误发生.
cloneNode(isDeepCopy)用于创建调用这个方法的节点 的一个完全相同的副本.cloneNode()方法接受一个布尔值参数,表示是否执行深复制。在参数为true的情况下,执行深复制,也就是复制节点及其整个子节点树;在参数为false的情况下,执行浅复制,即只复制节点本身。复制后返回的节点并没有为它指定父节点。因此,除非通过appendChild()、insertBefore()或 replaceChild()将它添加到文档中,否则它并不会在文档中显示.
例如,假设有下面的 HTML 代码:
如果我们已经将<ul>元素的引用保存在了变量myList中,那么通常下列代码就可以看出使用 cloneNode()方法的两种模式:
javascript
var deepList = myList.cloneNode(true);
alert(deepList.childNodes.length); // 当浏览器为IE8及更低版本的IE时,结果为3,其他浏览器结果为7
var shallowList = myList.cloneNode(false); alert(shallowList.childNodes.length); //0
deepList.childNodes.length中的差异主要是因为IE8及更早版本与其他浏览器处理空白字符的方式不一样.IE9之前的版本不会为空白符创建节点.
document.createElement(tagName)通过标签名创建一个元素节点。document.createElement()方法接受一个字符串参数,这个字符串即为标签名字.
javascript var myDiv = document.createElement(‘div‘);
html代码
<!DOCTYPE html>
<html lang="zh-cn">
<head>
    <meta charset="UTF-8">
    <title>option的移动</title>
</head>
<style>
    *{
        margin: 0;
        padding: 0;
    }
    body{
        width: 600px;
        margin: 0 auto;
    }
    div{
        float: left;
        margin-top: 100px;
    }
    select{
        width: 250px;
        height: 250px;
        margin-right: 50px;
    }
    option{
        margin-top: 10px;
    }
</style>
<body>
<div id="div1">
    <select  id="select1" size="8">
        <option value="">第1个</option>
        <option value="">第2个</option>
        <option value="">第3个</option>
        <option value="">第4个</option>
        <option value="">第5个</option>
        <option value="">第6个</option>
        <option value="">第7个</option>
        <option value="">第8个</option>
    </select><br>
    <button id="up1">向上移动</button>
    <button id="down1">向下移动</button>
    <button id="toRight">向右移动</button>
    <button id="all1">全部向右</button>
</div>
<div id="div2">
    <select  id="select2" size="8">
        <option value="">第1个</option>
        <option value="">第2个</option>
        <option value="">第3个</option>
        <option value="">第4个</option>
        <option value="">第5个</option>
        <option value="">第6个</option>
        <option value="">第7个</option>
        <option value="">第8个</option>
    </select><br>
    <button id="up2">向上移动</button>
    <button id="down2">向下移动</button>
    <button id="toLeft">向左移动</button>
    <button id="all2">全部向左</button>
</div>
<script type="text/javascript" src="../js/index.js"></script>
</body>
</html>
js代码
(function() {
var select1 = document.getElementById(‘select1‘);
var downBtn1 = document.getElementById(‘down1‘);
var upBtn1 = document.getElementById(‘up1‘);
var toRight = document.getElementById(‘toRight‘);
var all1 = document.getElementById(‘all1‘);
var select2 = document.getElementById(‘select2‘);
var downBtn2 = document.getElementById(‘down2‘);
var upBtn2 = document.getElementById(‘up2‘);
var toLeft = document.getElementById(‘toLeft‘);
var all2 = document.getElementById(‘all2‘);
//向下移动
function down(select){
    var index = select.selectedIndex;
    var option = select.options[index];
    if(inex !== -1){
        if(index === select.length - 2 || index === select.length - 1) {
            select.appendChild(option);
        } else {
            select.insertBefore(option, select.options[index + 2]);
        }
    }
}
//向上移动
function up(select){
    var index= select.selectedIndex;
    var option = select.options[index];
    if(index !== -1){
        if(index ===0){
            select.appendChild(option);
        }else{
            select.insertBefore(option,select.options[index -1]);
        }
    }
}
//向左、向右移动
function leftRight(leftorright){
    if(leftorright === select1){
        var index = leftorright.selectedIndex;
        var option = leftorright.options[index];
        if(index !== -1){
            select2.appendChild(option);
        }               
    }else if(leftorright === select2){
        var index = select2.selectedIndex;
        var option = select2.options[index];
        if(index !== -1){
            select1.appendChild(option);
        }
    }
}
//全部向左、向右移动
function  allLeftRight(allLR){
    if(allLR === select1){
        for(i=0;i<allLR.length;){
        var option = allLR.options[i];
        select2.appendChild(option);
        }
    }else if(allLR === select2){
        for(i=0;i<allLR.length;){
            var option = allLR.options[i];
            select1.appendChild(option);
        }
    }
}
downBtn1.onclick = function() {
    down(select1);
};
downBtn2.onclick = function() {
    down(select2);
};
upBtn1.onclick = function() {
    up(select1);
};
upBtn2.onclick = function() {
    up(select2);
};
toRight.onclick = function() {
    leftRight(select1);
};
toLeft.onclick = function() {
    leftRight(select2);
};
all1.onclick = function () {
    allLeftRight(select1)
};
all2.onclick = function () {
    allLeftRight(select2)
};
})();
javascript 使我们有能力创建动态页面。 事件是可以被javascript侦测到的行为。
1.1 事件源 触发事件的元素
1.2 事件 被 JavaScript 侦测到的行为
事件举例:
- 鼠标点击
 - 鼠标悬浮于页面的某个热点之上
 - 键盘按键
 - 确认表单
 - 在表单中选取输入框
 
1.3 事件处理函数
事件发生时要进行的操作,又叫做"事件句柄"或"事件监听器"
| 事件类型 | 事件句柄 | 触发时机 | 
|---|---|---|
| 鼠标事件 | onclick | 鼠标点击操作 | 
| ondblclick | 鼠标双击操作 | |
| onmousedown | 按下鼠标按键 | |
| onmouseup | 抬起鼠标按键 | |
| onmousemove | 鼠标指针在元素上方移动 | |
| onmouseover | 鼠标指针进入元素 | |
| onmouseout | 鼠标指针移出元素 | |
| DOMMouseScroll | 鼠标滚轮事件(FF) | |
| onmousewheel | 鼠标滚轮事件(IE,CHROM) | |
| 键盘事件 | onkeyup | 抬起键盘按键 | 
| onkeydown | 按下键盘按键 | |
| onkeypress | 按下或按住键盘按键 | |
| 表单事件 | onsubmit | 按下表单的提交按钮 | 
| onblur | input失去焦点 | |
| onfoucs | input获得元素 | |
| onchange | 更改input元素的内容 | |
| 页面事件 | onload | 页面加载完成 | 
| onunload | 文档的载入被撤销(例如页面跳转等情况时) | |
| onbeforeunload | 页面刷新或关闭时 | 
3.1 JavaScript脚本中绑定事件
html:
<input type="button" id="btn" value="点我"/>
JavaScript:
var btn = document.getElementById("btn");
方式1:
btn.onclick = function() {}
方式2:
function test() {
    console.log(123);
}
btn.onclick = test;
3.2 标签中绑定事件
<input type="button" id="btn" value="点我" onclick="test()"/>
3.3 监听器
| IE | CHROM,FIREFOX | 
|---|---|
| element.attachEvent(event, function);//添加 element.detachEvent(event, function);//删除 | element.addEventListener(event, function, useCapture);//添加 element.removeEventListener(event, function, useCapture);//删除 | 
4.1 什么是事件源对象
事件源对象是指event对象,其封装了与事件相关的详细信息. - 当事件发生时,只能在事件函数内部访问的对象 - 处理函数结束后会自动销毁
4.2 获取EVENT对象
| IE | w3c | |
|---|---|---|
| 事件源对象 | window.event | e | 
4.3 EVENT对象的属性
4.3.1 鼠标事件
相对于浏览器位置 event.clientX: 返回当事件被触发时鼠标指针向对于浏览器页面(或客户区)的水平坐标 event.clientY: 返回当事件被触发时鼠标指针向对于浏览器页面(客户区)的垂直坐标
相对于屏幕位置 event.screenX: 返回事件发生时鼠标指针相对于屏幕的水平坐标 event.screenY: 返回事件发生时鼠标指针相对于屏幕的垂直坐标
相对于事件源位置 event.offsetX: 返回事件发生时鼠标指针相对于事件源的水平坐标 event.offsetY: 返回事件发生时鼠标指针相对于事件源的垂直坐标 event.layerX: 返回事件发生时鼠标指针相对于事件源的水平坐标(FIREFOX) event.layerY: 返回事件发生时鼠标指针相对于事件源的垂直坐标(FIREFOX)
4.3.2 键盘事件
4.3.3 type属性 用来检测事件类型
html
<!DOCTYPE html>
<html lang="zh-cn">
<head>
    <meta charset="UTF-8">
    <title>我以开始慢慢练习</title>
</head>
<style>
    *{
        margin: 0;
        padding: 0;;
    }
    select{
        width: 100px;
    }
</style>
<body style="width: 950px ;margin: 50px auto">
<select name="" id="province">
</select>
<select name="" id="city">
</select>
<script type="text/javascript" src="../js/lianxi.js"></script>
</body>
</html>
js
// json
// JavaScript Object Notation 
// js对象表示法
var oData = [
    {
        name:‘四川省‘,
        city:[‘成都市‘,‘达州市‘,‘南充市‘,‘攀枝花市‘]
    },{
        name:‘甘肃省‘,
        city:[‘兰州市‘,‘天水市‘]
    },{
        name:‘西藏‘,
        city:[‘拉萨‘,‘昌都‘]
    }
];
(function(){
    var province = document.getElementById(‘province‘);
    var city = document.getElementById(‘city‘);
    for(i = 0;i < oData.length;i++){
        var option = document.createElement(‘option‘);
        option.innerHTML = oData[i].name;
        province.appendChild(option);
    }
    showCity(0);
    province.onchange =function(){
        showCity();
    };
    function  showCity(){
            city.innerHTML = ‘‘;
            for(i=0;i<oData[province.selectedIndex].city.length;i++){
            var option = document.createElement(‘option‘);
            option.innerHTML = oData[province.selectedIndex].city[i];
            city.appendChild(option);
            }
    }
})();
重新给事件赋值函数, 并让函数为undefined或null。
标签:key eth on() 其他 按钮 样式 调用 数值 time
原文地址:http://www.cnblogs.com/plainsailing/p/5990898.html