zoukankan      html  css  js  c++  java
  • 学习前端总结

    什么是表达式?
      在页面中能够得到结果,那么就代表是表达式。

    如下图:在控制台输入1==1 回车得到true,true就是一个结果,所以1==1 就是一个表达式

     只输入一个数字2,回车也能得到一个值2,所以2也是一个表达式

     输入一个不带引号的字符,则没有结果,直接报错,所以就不是表达式

     带引号'123',则代表是一个字符串,基本数据类型都可以是一个表达式,但是如果没有引号则代表是一个变量,找不到这个变量则没有返回值。

    总结:分类如下

    • 单值表达式:不使用运算符的表达式
      • 简单表达式:不能再分解的表达式
      • 复杂表达式:需要其它表达式参与的表达式
    • 复合表达式:由运算符将多个单值表达式结合而成的表达式

    所有表达式均有返回值

    一个变量初始值为undefined,所以有一种写法,当condition这个变量没有赋值的时候直接这么用则返回false。

    var condition;
    if
    (condition){
      alert(
    "true") }else{
      alert("false")
    }

    实现一个树节点:

    最终展示效果:

    使用vue的代码:

    <!DOCTYPE html>
    <html lang="en">
      <head>
        <meta charset="UTF-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
        <title>Document</title>
      </head>
      <style>
        li {
          list-style: none;
        }
      </style>
      <body>
        <template id="treenode">
          <ul>
            <div @click="condition = !condition">
              <span>{{condition ? "收缩":"展开"}}</span>
              {{node.title}}
            </div>
            <li v-show="condition">
              <tree-node v-for="(item2, index) in node.children" :key="index" :node="item2"></tree-node>
            </li>
          </ul>
        </template>
        <div id="app" style="margin: auto;  300px; border-color: aqua; border-style: solid">
          <tree-node v-for="(item, index) in treeList" :key="index" :node="item"></tree-node>
        </div>
        <script>
          Vue.component('tree-node', {
            props: ['node'],
            template: '#treenode',
            data: function () {
              return {
                condition: true
              }
            }
          })
          var vm = new Vue({
            el: '#app',
            data: {
              treeList: [
                {
                  title: '1',
                  children: [
                    {
                      title: '1-1',
                      children: [
                        {
                          title: '1-1-1'
                        }
                      ]
                    }
                  ]
                },
                {
                  title: '2',
                  children: [
                    {
                      title: '2-1'
                    }
                  ]
                }
              ]
            }
          })
        </script>
      </body>
    </html>

     用jequery的写法:

    html代码

    <!DOCTYPE html>
    <html lang="en">
      <head>
        <meta charset="UTF-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <title>Document</title>
        <script src="http://libs.baidu.com/jquery/1.8.1/jquery.min.js"></script>
        <script src="./tree.js"></script>
      </head>
    
      <style>
        * {
          padding: 0px;
          margin: 0px;
        }
        li {
          list-style: none;
        }
        .item {
          padding-left: 20px;
        }
        .toggle {
          margin-right: 20px;
        }
      </style>
    
      <body style="background: #888888">
        <div style="margin: 30px auto;  300px; border: 1px solid #ccc; padding: 20px">
          <ul id="tree"></ul>
        </div>
      </body>
    
      <script>
        let data = [
          {
            title: '1',
            children: [
              {
                title: '1-1',
                children: [
                  {
                    title: '1-1-1'
                  }
                ]
              }
            ]
          },
          {
            title: '2',
            children: [
              {
                title: '2-1',
                children: [
                  {
                    title: '2-1-1'
                  }
                ]
              }
            ]
          }
        ]
    
        $(function () {
          tree.init('tree', data, {
            toggle: function (t) {
              alert(t)
            }
          })
        })
      </script>
    </html>

    js代码

    var tree = {
      buildHtml: function (list) {
        let html = ''
        for (let i = 0; i < list.length; i++) {
          let toggle = ''
          if (list[i].children && list[i].children.length > 0) {
            toggle = "<span class='toggle'>收缩</span>"
          }
          html += "<li class='item'><div>" + toggle + list[i].title + '</div>'
    
          let childHtml = '<ul>'
    
          if (list[i].children && list[i].children.length > 0) {
            childHtml += this.buildHtml(list[i].children)
          }
          childHtml += '</ul>'
          html += childHtml
          html += '</li>'
        }
        return html
      },
      init: function (id, data, eventFn) {
        let html = this.buildHtml(data)
        $('#' + id).html(html)
        $(document).on('click', '.toggle', function () {
          if ($(this).text() == '展开') {
            $(this).text('收缩')
          } else {
            $(this).text('展开')
          }
    
          let display = $(this).parent().next().data('display')
    
          if (display != 'none') {
            display = 'none'
          } else {
            display = 'block'
          }
    
          $(this).parent().next().data('display', display)
    
          $(this).parent().next().css({
            display: display
          })
          if (eventFn && eventFn.toggle) {
            eventFn.toggle(display)
          }
        })
      }
    }

    由此可以比较出来,vue不用直接操作dom元素,直接将数据绑定即可,扩展修改时不需要那么复杂操作,jquery直接操作dom元素时,一旦需要扩展优化需要修改的地方会很多很多。 

  • 相关阅读:
    几何服务,cut功能,输入要素target(修改后)内容。
    几何服务,cut功能,输入要素target(修改前)内容。
    ArcGIS Server,rest路径输入要素json 格式描述
    window对象的screen详解
    window对象的inner/outer/page/screen详解
    js的scroll详解
    js的client详解
    自己封装的操作DOM方法
    js模拟高级语言的重载
    charCode与keyCode的区别
  • 原文地址:https://www.cnblogs.com/qcq0703/p/13798719.html
Copyright © 2011-2022 走看看