美文网首页
JavaScript基础

JavaScript基础

作者: 马梦里 | 来源:发表于2017-12-06 19:19 被阅读0次

    一、页面中引入js代码

        在HTML主体代码最底端插入<script>标签即可。不在上面加入,是因为网页根据HTML自上而下加载,如果放在头部,会导致无法获取元素;而且网页的加载速度会变慢,要先让用户看到基本网页,再加载js效果。js是单线程的,如果某个节点错了,那么整个链就错了。
        网页加载完主体代码后,将会执行js里面的函数。如果有多个js文件,源函数文件放在上面,下面的文件可以直接使用上面文件的函数。
        如果想用js进行网络编程(与服务器交流),那么只需要一个HTML框架,其他的可以用js函数解决(插入元素,获取数据(源数据和输入数据),最主要的是输入数据的提交,也是GET或POST方法)

    二、js基础

    规范:classclass开头,idid开头;
    一句话结束后,可以使用也可以不适用“;”,true和false为小写;
    1.单行和多行注释:// 或 /* */
    2.变量没有类型,在使用前通过var修饰定义:var a = 1
    3.单行字符串使用普通引号:“''”,多行使用:“``”;
    4.函数的定义
    调用函数时,参数可多可少,不会报错,但多出来的参数会显示undefined;

    // 方式一:
    var myfunction = function(){
            ...
    }
    // 方式二:
    var myfunction():
            ...
    
    **// 前端编程也需要打log函数,在console里查看结果
    var log = function(){
            console.log.apply(console, arguments)
    }**
    

    5.数据的操作
    数组:

    var arr = [1,2,3,4,5,]
    arr.push(5)            // 增加,不同于python的append
    arr.length              // python length(arr)
    

    字典:
    js的字典就是对象,key的引号可以省略,取值可以用点语法。

    var dic = {
            key:'value',
            name:'majun'
    }
    

    6.js页查找元素
    document.querySelector()
    返回找到的第一个元素,querySelectorAll() 返回所有
        document包含整个文档,也就是html的父元素。其也可以是一小块的父元素,在这小块里面查找子元素。
    选择器:元素的查找依赖于选择器(三种)

    class    : .class-name
    id          :  #id-name
    element:body、p、a等
    

    7.获取和设置属性值

    1.先获取这个元素
    var ele = document.querySelector('.commentInput')
    2.获取属性值
    input元素有个特定的value属性,代表输入的内容
    value = ele.value
    // 其他元素的是innerText属性:span  p  button等
    或者:
    ele.getAttribute('value')    // input里面如果设置了value,将拿到默认值;.拿到的是更新值;
    3.设置属性值
    ele.value = 'inputValue'
    ele.setAttribute('attrname','attrvalue')
    

    8.操作元素(增、删、查、该)

    <div class='input-form'>
    </div>
    

    1.查
    全局查:(document相当于html的父元素,也可以换成其他父元素)
    var inputForm = document.querySelector('.input-form')
    查找父元素
    ele.parentElement()
    2.增(beforeBegin、afterBegin、beforeEnd、afterEnd)
    inputForm.insertAdjacentHTML('beforeEnd', '<h3 class='h1-form'>请输入<h3>')
    相当于以前的三部(创建、赋值、插入):

    h1 = document.createElement('h3')
    h1.insertText('请输入')
    inputForm.appendChild(h1)
    

        也可以用innerHTMLt和innerText(不会被渲染)属性
    inputForm.innerHTML = "<h3 class='h1-form'>请输入<h3>" inputForm.innerText = "<h3 class='h1-form'>请输入<h3>"
    3.删
    inputForm.remove()
    4.改
        前面已经讲过属性的更改,现在讲讲元素内文本的更改:p、span、button等。直接用innerText:
    p.innerText = '这是更改后的文本'

    三、js事件

    click、dbclick、浏览器加载前后、键盘等;
    步骤:
    1.获取元素
    2.定义事件响应的函数
    3.绑定事件(也可以在绑定事件的时候定义函数)

    inputForm.addEventListener('click', function(){
            log('哈哈,被点击到了')
    })
    

    四、事件委托

        一个父元素下有很多子元素,其中某个子元素要进行某个事件,那么现在可以将这个父元素绑定该事件,那么子元素就都有该事件了,再通过class或id找到该子元素,编写相关事件函数即可。
        事件的操作都是一个套路,查找到父元素,父元素绑定事,定义事件函数,参数为event,利用var self = event.target获取点击的当前元素,再用if语句判断是不是该元素执行事件(条件:self.classList.contains('classname')),再执行相关事件函数。

    五、序列化和反序列化(用于数据交换)

    ‘字典 / 数组’ 与 字符串 之间的转换
    JSON:互联网数据交换的事实标准;JavaScript Object Notation--js对象标记
    python也有内置的标准库进行相应转换:inport jsondumpsloads
    序列化:‘字典 / 数组’ 转换为 字符串
    JSON.stringify([1,2,3])
    反序列化:字符串 转换为 ‘字典 / 数组’
    JSON.parse(s)
    可以使用typeof查看数据类型;
    利用JavaScript的异步进行网络编程时,需要用到序列化与反序列化,这个下面一章会具体讲到。

    六、ajax异步

    通过回调函数实现异步
        下一章用例子详细讲。
        张三去超市买火腿,超市没货,所以超市告知张三,你先留个电话号码,我进货后给你打电话,你再过来拿。
        那么张三现在就可以回去了,超市也正常营业。等进货后,超市给张三打电话,张三过来取货,然后回家。
    那么后面这个过程就完成了一次回调。

    2.流程:
        打开index界面的时候,服务器响应给浏览器index.html,浏览器解析index.html
        发现了最末尾的两个js文件,那么再向服务器进行请求。
        服务器获得请求后,会执行这两个文件里面的代码:
    首先:
        在todo.js里面有个__main()函数,那么执行它包裹的两个函数bindEvents()和loadTodos(),由于没有触发点击事件,所以执行loadTodos()函数。
        在loadTodos()函数里面先执行调用的apiTodoAll()函数,它里面有个参数,即为回调函数,回调函数暂且不执行。
        执行apiTodoAll(),函数里面有个函数,为回调函数(待会执行),而且定义了path,调用了ajax函数,将path传递给ajax函数,执行ajax函数代码;
    ajax函数流程
        先实例化一个XMLHttpRequest(),然后设置请求方法和请求地址,然后下面有个回调函数,暂且不执行,继续往下走,通过r发送数据。现在服务器获得了数据,那么响应请求,当readyState为4的时候,开始执行回调函数,将实例r的response作为参数传递给回调函数;
        现在往回走,执行apiTodoAll里面的回调函数,发现没有,那么继续往回走,到了loadTodos里面,找到了回调函数,参数r为ajax里面的响应r.response,通过解码以及遍历,将数据插入到html里面。那么,到此就结束了。

    回调函数

        函数a有一个参数,这个参数是个函数b,当函数a执行完以后执行函数b。那么这个过程就叫回调。”,这句话的意思是函数b以一个参数的形式传入函数a并执行,顺序是先执行a ,然后执行参数b,b就是所谓的回调函数。

    在JavaScript中,如果有元素的属性设置格式为data-attr = '',则可以通过元素的dataset.attr获得;

    相关文章

      网友评论

          本文标题:JavaScript基础

          本文链接:https://www.haomeiwen.com/subject/xuvlixtx.html