初入javascript知识点(七)

用jQuery重写之前的student数据

html

<!DOCTYPE html>

姓名: 年龄: 性别: 添加

姓名 年龄 性别 操作

JS

$(function() {
  var data;

  // 1. 获取数据
  if(localStorage.data === undefined) {
    $.ajax({
      url: ‘./../data/data.json‘,
      type: ‘get‘,
      success: function(dataFromServer) {
        data = dataFromServer;
        localStorage.data = JSON.stringify(data);

        showTable();
      }
    });
  } else {
    data = JSON.parse(localStorage.data);
    showTable();
  }

  // 添加学生
  $(‘#add‘).on(‘click‘, function() {
    var stu = {
      name: $(‘#name‘).val(),
      age: $(‘#age‘).val(),
      gender: $(‘#gender‘).val()
    };
    $(‘input‘).val(‘‘);
    data.push(stu);
    localStorage.data = JSON.stringify(data);

    showTable();
  });

  // 删除
  $(‘#tbody‘).on(‘click‘, ‘.delete‘, function() {
    var index = this.parentNode.parentNode.sectionRowIndex;

    // 删掉data数组中对应的那一项
    data.splice(index, 1);
    localStorage.data = JSON.stringify(data);

    showTable();
  });

  // 修改姓名
  $(‘#tbody‘).on(‘click‘, ‘.name‘, function() {
    onChangeBtnClick(this, 0, ‘name‘);
  });

  // 修改年龄
  $(‘#tbody‘).on(‘click‘, ‘.age‘, function() {
    onChangeBtnClick(this, 1, ‘age‘);
  });

  // 点击修改XX按钮
  function onChangeBtnClick(btn, tdIndex, prop) {
    var $tr = $(btn).parent().parent();
    var $td = $tr.children().eq(tdIndex);
    // console.log($td);
    $td.html(‘<input type="text" value="‘ + $td.text() + ‘">‘);

    var $operateTd = $(btn).parent();
    $operateTd
      .empty()
      .append($(‘<button>确定</button>‘).on(‘click‘, function() {
        var newValue = $td.children().eq(0).val();
        var index = $tr.get(0).sectionRowIndex;
        // console.log(newValue, index);
        data[index][prop] = newValue;
        localStorage.data = JSON.stringify(data);

        showTable();
      }))
      .append($(‘<button class="cancel">取消</button>‘))
  }

  // 取消修改
  $(‘#tbody‘).on(‘click‘, ‘.cancel‘, showTable);

  // 显示表格
  function showTable() {
    $(‘#tbody‘).empty();
    $.each(data, function(i, n) {
      // console.log(i);
      // console.log(n);
      // console.log(this);
      // console.log(‘========‘);

      $(‘<tr></tr>‘)
        .append($(
          ‘<td>‘ + n.name + ‘</td>‘
          + ‘<td>‘ + n.age + ‘</td>‘
          + ‘<td>‘ + n.gender + ‘</td>‘
          + ‘<td><button class="delete">删除</button><button class="name">修改姓名</button><button class="age">修改年龄</button></td>‘))
        .appendTo($(‘#tbody‘))
    });
  }
});

jQuery写轮播

$(function() {
  $(‘#wrap‘).data(‘index‘, 0);

  $(‘#nav‘).on(‘click‘, ‘li‘, function() {
    // 清除自动播放的定时器
    clearInterval(timer);

    var that = this;
    var index = $(this).index();
    // 把当前要显示的图片的索引号,保存到附加数据中
    $(‘#wrap‘).data(‘index‘, index).animate({
      left: index * (-430)
    }, 600, function() {
      $(‘#nav li‘).removeClass(‘selected‘);
      $(that).addClass(‘selected‘);

      // 重启自动播放的定时器
      timer = setInterval(autoPlay, 2000);
    });
  });

  var timer = setInterval(autoPlay, 2000);

  function autoPlay() {
    // console.log(123);
    // 获取当前的index
    var currentIndex = $(‘#wrap‘).data(‘index‘);

    // 下一张的index
    var nextIndex;
    if(currentIndex === $(‘#wrap img‘).length - 1) {
      nextIndex = 0;
    } else {
      nextIndex = currentIndex + 1;
    }

    // console.log(nextIndex);

    $(‘#wrap‘).data(‘index‘, nextIndex).animate({
      left: nextIndex * (-430)
    }, 600, function() {
      $(‘#nav li‘).removeClass(‘selected‘).eq(nextIndex).addClass(‘selected‘);
    });
  }
});

handlebars 模版引擎

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>handlebars</title>
  <style>
    .big {
      width: 100px;
      height: 100px;
      border: 1px solid green;
      border-radius: 100px;
      position: relative;
    }
    .small {
      width: 50px;
      height: 50px;
      border: 1px solid green;
      border-radius: 50px;
      position: absolute;
      left: 0;
      right: 0;
      top: 0;
      bottom: 0;
      margin: auto;
      text-align: center;
      line-height: 50px;
    }
  </style>
</head>
<body>
  <div id="container"></div>
  <script id="template" type="text/x-handlebars-template">
    <h1>Hello</h1>
    <h2>Handlebars</h2>
    <table border="1">
      <thead>
        <tr>
          <th>姓名</th>
          <th>年龄</th>
          <th>性别</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>{{name}}</td>
          <td>{{age}}</td>
          <td>{{gender}}</td>
        </tr>
      </tbody>
    </table>
    <p>hello, {{name}}</p>
    <p>{{hello}}</p>
    <table border="1">
      <thead>
        <tr>
          <th>姓名</th>
          <th>年龄</th>
          <th>性别</th>
        </tr>
      </thead>
      <tbody>
        {{#each listOfStudents}}
          <tr>
            <td>{{name}}</td>
            <td>{{age}}</td>
            <td>{{gender}}</td>
          </tr>
        {{/each}}
      </tbody>
    </table>

    <p>hello, {{{person.a.name}}}</p>
    <p>hello, {{person/a/name}}</p>

    <div class="big">
      <div class="small">
        2
      </div>
    </div>
    <div class="big">
      <div class="small">
        3
      </div>
    </div>
    <div class="big">
      <div class="small">
        4
      </div>
    </div>

    {{circle name}}
    {{circle name}}
    {{circle name}}
  </script>
  <script src="./js/handlebars-v4.0.5.js"></script>
  <script>
    // 获取模板的源代码
    var source = document.getElementById(‘template‘).innerHTML;

    // 把模板的源代码,编译成模板对象
    var template = Handlebars.compile(source);

    // 创建helper
    Handlebars.registerHelper(‘circle‘, function(data) {
      // return ‘<div class="big"><div class="small">‘ + data + ‘</div></div>‘;

      // 告诉系统,这个返回值要解析成真正的标签
      var obj = new Handlebars.SafeString(‘<div class="big"><div class="small">‘ + data + ‘</div></div>‘);

      return obj;
    });

    // 通过模板对象,获取最终html代码
    var html = template({
      person: {
        a: {
          name: ‘Tom<input type="text">‘
        },
        b: ‘hello‘
      },
      name: ‘Bob‘,
      age: 20,
      gender: ‘male‘,
      test: ‘hello‘,
      listOfStudents: [
        {
          name: ‘bob‘,
          age: 20,
          gender: ‘male‘
        },
        {
          name: ‘tom‘,
          age: 22,
          gender: ‘male‘
        },
        {
          name: ‘Hellen‘,
          age: 20,
          gender: ‘female‘
        },
      ]
    });

    // console.log(html);
    // 把html代码插入到网页中去
    document.getElementById(‘container‘).innerHTML = html;

    // helper
  </script>
</body>
</html>
时间: 2024-10-29 19:08:20

初入javascript知识点(七)的相关文章

初入javascript知识点(六)

正则表达式 RegExp 是正则表达式的缩写. 定义 RegExp RegExp 对象用于存储检索模式. 通过 new 关键词来定义 RegExp 对象.以下代码定义了名为 patt1 的 RegExp 对象,其模式是 "e": var patt1=new RegExp("e"); 当您使用该 RegExp 对象在一个字符串中检索时,将寻找的是字符 "e". RegExp 对象有 3 个方法: test() test() 方法检索字符串中的指定值

初入javascript知识点(五)

导航按钮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++){ listOfbt

初入javascript知识点(八)

jQuery性能优化 1.对于在jQuery中重复使用的标签,在第一次选择的时候就用一个变量把它保存起来. 2.在使用类名选择器时,加上父级选择器(父级选择器使用id或标签名) 3.使用find方法来选取后代 4.尽量使用jquery中的链式写法 5.使用事件委托 数据库 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库. MongoDB简介 MongoDB是一个基于分布式文件存储的数据库,由C++语言编写,旨在为WEB应用提供可扩展的高性能数据存储解决方案. MongoDB

初入javascript知识点(一)

javascript引入 内嵌 script标签引入,一般是在body结束标签前引入<script type='text/jacascript' src='JS文件的地址'></script> 数据类型 在JavaScript中一种有5种原始类型 数值类型(number) 字符串类型(string) 布尔值类型(boolean) null 代表空 undefined 未定义 变量的命名规则 第一个字符可以是任意Unicode大小写字母,以及美元符号($)和下划线(_). 第二个字符

初入javascript知识点(二)

5.while语句 while(条件){ 代码块 } 判断条件的布尔值为true时,执行代码块.再返回判断条件的布尔值,若仍为true则继续执行代码块.以此类推,无限循环.当布尔值为false是则总之while语句. 例1:1+2+3+4+5+...+100=? var s = 0; var i = 1; while(i<=100) { s = s+i; i++; } console.log(s); 例1:1+2-3+4-5+...100=? var s=1; var i=2; var isAd

初入web知识点(七)

◆LESS 基于CSS的一种扩展技术:引入了变量.混合.运算.函数:简化CSS的代码,降低维护成本:必须通过解析器(koloa).***步骤***①新建文件夹②.html文件 .less文件③启动koloa配置路径④输入less文件 刷新koloa⑤会自动生成一个.css的文件(在写的过程中不要关闭koloa软件)⑥html引入的文件是koloa解析出来的CSS文件 ◆**◆ ①变量:@变量名:值 如 @名称自取: 5px soild red; 使用时 div{ border:@名称自取 } ②

初入web知识点(二)

◆CSS选择器(七种) ①元素选择器(类型选择器) 选择匹配选择器的网页上的任何HTML元素,不考虑这些元素在文档树中的位置.目标是一个元素的每个实例. ②类选择器(类名{属性:值:}) 被用于选择有某个class属性的任何HTML元素,不考虑在文档树中的位置. ③ID选择器 与类选择器相似,被用于选择某个ID属性的任何HTML元素,不用考虑这些元素在文档树中的位置.与类选择器的主要区别在于,同一属性ID值在同一页面上只能出现一次.而同一class属性值可以在同一页面中多次出现. ④包含选择器

初入JavaScript内核

由于羸弱的前端实力和架构思想,花了两天时间复习了JavaScript并深入内核,感觉大有裨益. 本人是后端工程师,做前端的意义在于... 准备迎接项目前端静态分离和前端架构extjs吧,哈哈. over...上图. 内核总纲 JS对象及JSON 函数对象 原型及内存结构 数组 正则表达式 闭包 执行上下文

初入web知识点(六)

◆过渡 transition 苹果浏览器前要加前缀 IE9不支持 多与hover配合使用 可以在不使用 Flash 动画或 JavaScript 的情况下,当元素从一种样式变换为另一种样式时为元素添加效果. 要实现这一点,必须规定两项内容: ①规定您希望把效果添加到哪个 CSS 属性上 规定属性名称 ②规定效果的时长 ,以秒为单位 默认值是0 属性: transition 简写属性,用于在一个属性中设置四个过渡属性 transition-property 规定应用过渡的 CSS 属性的名称 tr