[: currentTime | date:'mm:ss' :] [: timeLeft | date:'mm:ss' :]

参考示例 - ES5

<form id="create">
    <div>
        姓名:
        <input type="text" name="name">
    </div>
    <div>
        专业:
        <select name="type">
            <option value="文科">文科</option>
            <option value="理科">理科</option>
            <option value="体育">体育</option>
        </select>
    </div>
    <div>
        <button type="submit">创建用户</button>
    </div>
</form>

<script>
  init();

  /**
   * 初始化
   * */
  function init() {
    // 获取表单元素,等着绑事件
    var form = document.getElementById('create');

    // 给表单绑提交事件
    form.addEventListener('submit', function (e) {
      e.preventDefault();

      // 获取姓名和专业
      var name = document.querySelector('[name=name]').value;
      var type = document.querySelector('[name=type]').value;

      // 造学生
      var student = factory(name, type);

      // 重置表单
      form.reset();

      console.log('student:', student);
    });
  }

  function Student(name, subjects) {
    this.name = name;
    // ...

    // 如果是文科生:['政治', '历史', '地理']
    // 如果是理科生:['数学', '物理', '化学']
    this.subjects = subjects;
  }

  /**
   * 创建学生
   * @param {string} name 姓名
   * @param {string} type 文科还是理科
   * @return {Student}
   */
  function factory(name, type) {

    switch (type) {
      case '文科':
        return new Student(name, ['政治', '历史', '地理'])
        break;
      case '理科':
        return new Student(name, ['数学', '物理', '化学'])
        break;
      case '体育':
        return new Student(name, ['长跑', '...'])
        break;
      default:
        throw '没有这个专业,别瞎填';
    }
  }
</script>

ES6语法转换

[: currentTime | date:'mm:ss' :] [: timeLeft | date:'mm:ss' :]

参考示例 - ES6

<form id="create">
    <div>
        姓名:
        <input type="text" name="name">
    </div>
    <div>
        专业:
        <select name="type">
            <option value="文科">文科</option>
            <option value="理科">理科</option>
            <option value="体育">体育</option>
        </select>
    </div>
    <div>
        <button type="submit">创建用户</button>
    </div>
</form>

<script>
  init();

  /**
   * 初始化
   * */
  function init() {
    const form = document.getElementById('create');

    form.addEventListener('submit', e => {
      e.preventDefault();

      const name = document.querySelector('[name=name]').value;
      const type = document.querySelector('[name=type]').value;

      const student = factory(name, type);
      form.reset();

      console.log('student:', student);
    });
  }

  class Student {
    constructor(name, subjects) {
      this.name = name;
      // ...

      // 如果是文科生:['政治', '历史', '地理']
      // 如果是理科生:['数学', '物理', '化学']
      this.subjects = subjects;
    }
  }

  /**
   * 创建学生
   * @param {string} name 姓名
   * @param {string} type 文科还是理科
   * @return {Student}
   */
  function factory(name, type) {

    switch (type) {
      case '文科':
        return new Student(name, ['政治', '历史', '地理'])
        break;
      case '理科':
        return new Student(name, ['数学', '物理', '化学'])
        break;
      case '体育':
        return new Student(name, ['长跑', '...'])
        break;
      default:
        throw '没有这个专业,别瞎填';
    }
  }
</script>
登录后评论