Html css javascript

Day08 JS

2018-07-01  本文已影响0人  小章鱼Milo

1. 定时器

<script >
  //setTimeout() 超时调用
  /*
  * setTimeout(func,time) 返回setTimeout的一个ID值
  * 调用clearTimeout(ID)来取消调用
  * 间隔一段时间,触发函数,只触发一次
  * */
  setTimeout(function () {
    alert(1);
  },2000);
  //prompt 弹窗输入
  var result=window.prompt("请输入你的星座","狮子座");
  console.log(result);
  //setInterval(func,time)
  /*
  *定时器
  * 间隔一段时间,触发函数,一直触发
  * 返回setInterval的一个ID值
  * 调用clearInterval(ID)来取消调用
  * */
  // setInterval(function () {
  //   alert(1);
  // },1000);
  /*使用setTimeout实现setInterval
  * */
  function go() {
    console.log("hello world");
    setTimeout(go,2000);
  }
  go();
</script>

2.location

<script >
  //location.href 返回当前加载页面的完整URL
  console.log(location.href)
  //location.hash 返回URL中的hash(#号后跟0或多个字符),如果不包含则返回空字符串
  console.log(location.hash)
  //location.host 返回服务器名称和端口号
  console.log(location.host)
  //location.hostname 返回不带端口号的服务器名称
  console.log(location.hostname)
  //location.pathname 返回URL中的目录和(或)文件名
  console.log(location.pathname)
  //location.port 返回URL中指定的端口号,如果没有,返回空字符串
  console.log(location.port)
  //location.protocol 返回页面使用的协议
  console.log(location.protocol)
  //location.search 返回URL的查询字符串,这个字符串以问号开始。
  console.log(location.search)
  /*
  * 改变浏览器的位置的方法:
    location.href属性
    location对象其他属性也可改变URL
    location.hash
    location.search
    location.replace(url)

    location.reload()
    功能:重新加载当前显示的页面
    说明:
    location.reload()从缓存加载
    location.reload(true)从服务器重新加载

  *
  *
  * */
</script>

3.navigator

<script >
  // if(/Android|iphone|webOS/i.test(navigator.userAgent)){
  //   location.href="mobile.html"
  // }else if(/ipad/i.test(navigator.userAgent)){
  //   location.href="pad.html"
  // }
  var browser={
         versions:function(){
             var u = navigator.userAgent, app = navigator.appVersion;
            return {         //移动终端浏览器版本信息
                    trident: u.indexOf('Trident') > -1, //IE内核
                    presto: u.indexOf('Presto') > -1, //opera内核
                    webKit: u.indexOf('AppleWebKit') > -1, //苹果、谷歌内核
                    gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') == -1, //火狐内核
                    mobile: !!u.match(/AppleWebKit.*Mobile.*/), //是否为移动终端
                    ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios终端
                    android: u.indexOf('Android') > -1 || u.indexOf('Linux') > -1, //android终端或uc浏览器
                iPhone: u.indexOf('iPhone') > -1 , //是否为iPhone或者QQHD浏览器
                    iPad: u.indexOf('iPad') > -1, //是否iPad
                    webApp: u.indexOf('Safari') == -1 //是否web应该程序,没有头部与底部
             };
         }(),
         language:(navigator.browserLanguage || navigator.language).toLowerCase()
   }
//判断是否是移动端
  if(browser.versions.mobile) {
    console.log('我是移动端');
  }
  var s=document.hasOwnProperty("ontouchstart");//电脑返回false,手机为true
   console.log(s);
//判断安卓还是IOS

  if(browser.versions.ios){
          console.log('我是IOS');
     }
   if(browser.versions.andriod){
          console.log('我是安卓');
     }
//判断浏览器的类型
   if(browser.versions.trident){
         console.log('我是IE');
     }
   if(browser.versions.presto){
         console.log('我是opera');
     }
   if(browser.versions.webKit){
         console.log('我是苹果和谷歌');
     }
   if(browser.versions.gecko){
         console.log('我是火狐');
     }
</script>

4.节点

<div id="parent">
<p id="child"> hello world</p>
<p id="test"> hello world</p>
<p> hello world</p>
</div>

<script >
  //parentNode 获取父节点(亲爹)
  let p=document.getElementById("child");
  let parent=p.parentNode;
  console.log(parent);
  //子节点
  let divParent=document.getElementById("parent");
  let childs=divParent.childNodes;
  //childNodes 获取所有类型的子节点 默认把换行也当成一个子节点上述有7个节点
  console.log(childs);
  for (let i= 0;i<childs.length;i++){
    if (childs[i].nodeType==1){
      childs[i].style.backgroundColor="red";
    }
  }
  //children 获取子节点(元素节点)  IE9以后才能用
  let chis=document.getElementById("parent").children;
  console.log(chis);

  /*
  * firstChild 获取第一个子节点
  * firstElementChild 获取第一个元素子节点
  * lastChild 获取最后一个子节点
  * lastElementChild 获取最后一个元素子节点
  * */

  let fc=parent.firstChild;
  let fe=parent.firstElementChild;
  console.log(fc)
  console.log(fe)
//previousSibling 获取前面的兄弟节点
  //previousElementSibling 获取前面的兄弟元素节点
  //nextSibling 获取下一个兄弟节点
  //nextElementSibling 获取下一个兄弟元素节点
  let test=document.getElementById("test");
  let pSiblings=test.previousSibling;
  let pes=test.previousElementSibling;
  console.log(pSiblings)
  console.log(pes)
</script>
<body>
<ul>
<li>小米手机 <a href="#">删除</a></li>
<li>苹果手机 <a href="#">删除</a></li>
<li>华为手机 <a href="#">删除</a></li>

</ul>
<script >
  let shows=document.getElementsByTagName("a");
  for (let i=0;i<shows.length;i++){
    shows[i].onclick=function () {
      this.parentNode.style.display="red";
      //阻止a标签跳转事件
     // return false;
    }
  }
</script>
</body>

4.元素位置

<script >
  //元素水平方向偏移 offsetLeft
  let test=document.getElementById("test");
  let offL=test.offsetLeft;
  let offT=test.offsetTop;
  let offW=test.offsetWidth;
  let offH=test.offsetHeight;
console.log(offL);
  //元素垂直方向偏移的位置 offsetTop
  console.log(offT)
  //元素的宽度 offsetWidth 只读属性 无法更改
  console.log(offW)
  //元素的高度 offsetHeight
  console.log(offH)
</script>

5.属性设置

<body>
<p id="test" class="one">hello world</p>
<script >
  let p =document.getElementById("test")
  //test.style.color="red";
  //test.style["color"]="red";  当传入的属性是变量的时候 用这种方式
  function  changeStyle(ele,attr,value) {
    ele.style[attr]=value;
  }
  changeStyle(p, "backgroundColor","green");

  //设置style样式
  p.setAttribute("style","color:red");
  //获得属性值
  let cValue=p.getAttribute("class");
  //设置属性值
  p.setAttribute("class","two");
  //移除属性值
  console.log(p.getAttribute("class"))
  //p.removeAttribute("class");

</script>
</body>
<body>
  <p id="test">hello world</p>
<script >
  let p =document.getElementById("test");
  p.setAttribute("title","title");
</script>
</body>

6.浏览器窗口

<script >
  let windowWidth=window.innerWidth;
  let windowHeight=window.innerHeight;
  console.log(windowWidth)
  console.log(windowHeight)
  let wd=document.documentElement.clientWidth;
  let wh=document.documentElement.clientHeight;
  console.log(wd)
  console.log(wh)
  let bd=document.body.clientWidth;
  let bh=document.body.clientHeight;
  console.log(bd)
  console.log(bh)

</script>
<script >
  let width=document.documentElement.scrollWidth;
  let height=document.documentElement.scrollHeight;
  let windowheight=window.innerHeight
  let windowwidth=window.innerWidth
  console.log(windowwidth)
  console.log(windowheight)
  console.log(width)
  console.log(height)
  //scrollheight 和 scrollwidth 是页面内容的高宽  当内容大于窗口高宽时显示 内容高宽  反之显示窗口高宽
  //windowheight 和width 是窗口的高宽
</script>

7.文档碎片

<body>
<ul id="parent"></ul>
<button id="btn"></button>
<script >
  let btn=document.getElementById("btn");
  let parent=document.getElementById("parent")
  //创建一个文档碎片 将创建的li放到这个文档碎片中  再一次性加入到页面中 提升性能(但效果一般)
  let frame=document.createDocumentFragment()
  btn.onclick=function () {
    for (let i=0;i<=10;i++){
      let li=document.createElement("li")
      frame.appendChild(li);
    }
    parent.appendChild(frame);

  }
</script>
</body>

8.静态表格Demo

<head>
    <meta charset="UTF-8">
    <title>Title</title>
  <style>
    table,td,th{
      border:1px solid #333;
    }
    table{
      border-collapse: collapse;
      width: 500px;
      line-height: 50px;
      text-align: center;
    }
  </style>
</head>
<body>
<table id="table">
  <thead>
  <tr>
    <th>商城</th>
    <th>手机</th>
  </tr>
  </thead>
  <tbody>
  <tr>
    <td>JD商城</td>
    <td>苹果手机</td>
  </tr>
  <tr>
    <td>天猫</td>
    <td>华为手机</td>
  </tr>
  <tr>
    <td>拼多多</td>
    <td>魅族手机</td>
  </tr>
  <tr>
    <td>苏宁</td>
    <td>小米手机</td>
  </tr>
  </tbody>
</table>

<script >
  //thead,tbodies,rows,cells
  /*
  * tHead 获取表格的标题
  * */



  /*
  * 需求:
  * 1.标题的背景色 #eee;
  * 2.tbody下奇数行为 #ff2d51 偶数为#44cef6
  * */
  let table=document.getElementById("table");
  let thead=table.tHead;
  thead.style.backgroundColor="#eee"
  console.log(thead)
  let tbody=table.tBodies[0]
  let rows=tbody.rows
  let firstCell=rows[0].cells[0];
  console.log(rows)
  for(let i=0;i<rows.length;i++){
    if (i%2==0){
      rows[i].style.backgroundColor="#ff2d51"
    } else{
      rows[i].style.backgroundColor="#44cdf6"
    }
  }
  firstCell.innerHTML="银泰百货"
</script>
</body>

9.动态添加表格

<head>
    <meta charset="UTF-8">
    <title>Title</title>
  <style>
    table,th,td{
      border: 1px solid #333;
      width: 500px;
      line-height: 50px;
    }
    table{
      border-collapse: collapse;
      text-align: center;
    }
    tbody tr:nth-child(even){
      background: #ff2d51;
    }
    tbody tr:nth-child(odd){
      background: #44cef6;
    }
    div{
      margin-bottom: 40px;
    }
  </style>
</head>
<body>
<div>
  手机品牌 <input type="text" id="phone">
  价格 <input type="text" id="price">
  <button id="btn">添加</button>
</div>
<table>
  <thead>
  <tr>
    <th>手机品牌</th>
    <th>价格</th>
  </tr>
  </thead>
  <tbody>
  <tr>
    <td>苹果7</td>
    <td>8K</td>
  </tr>
  </tbody>
</table>

<script >
  let btn=document.getElementById("btn")
  let phone=document.getElementById("phone")
  let price=document.getElementById("price")

  let tbody=document.getElementsByTagName("table")[0].tBodies[0];
  btn.onclick=function () {
    let tr=document.createElement("tr");
    let td1=document.createElement("td");
    td1.innerHTML=phone.value;
    let td2=document.createElement("td");
    td2.innerHTML=price.value;
    tr.appendChild(td1);
    tr.appendChild(td2);

    tbody.appendChild(tr)
  }

</script>
</body>

10.函数

<script >
  /*
  * 函数书写方式
  * 1.直接书写  (推荐)
  * */
  function go() {
    console.log("hello world")
  }
  go();
  //2.变量声明方式 (无法再声明之前调用)
  let one=function () {
    console.log("one");
  }
  one();
  //构造函数的方式声明 (不推荐)
  let two= new Function("two","console.log(two)")
  two("a");
</script>

11.箭头函数

<script >
  //ES6的写法
  let go=()=>{
    console.log("hello world")
  }
  go();
  let obj={
    say:function (){console.log("say")},
    eat:()=>{
      console.log("eat")
    }
  }
  obj.say();
  obj.eat();
</script>

12.函数的传参

<script >
  /*
  * js中函数传不定参
  *js中如果函数同名 下面的会覆盖上面的
  *
  * */
  function go(a,b) {
    console.log(a);
    console.log(a+b)
  }
  go(1,2)
  go(1)

  /*
  * js中要想使用重载,则需要使用arguments对象
  * 函数内部有一个arguments对象,来管理函数传入的参数
  * */
  function test(){
    if (arguments.length==1){
      console.log("1");
    } else if (arguments.length==2){
      console.log("2");
    } else {
      console.log("hello world")
    }

  }
  test(2,3,4);
  test(1)
  test(1,2)
</script>

13.基本类型和引用类型

<script >
  //1.基本类型只传值
  //2.引用类型既传值也传址

  // let a=10;
  // let b=a;
  // console.log(b)

  // let arr=[1,2,3]
  // let b=arr;
  // b[arr.length]=4;
  // console.log(arr);

  let obj={
    name:"xiao"
  }
  let c=obj
  c.age=13;
  console.log(obj.age)
</script>
上一篇 下一篇

猜你喜欢

热点阅读