JavaScript使用

 

DOM Nodes

节点

HTML 文档中所有内容都是节点

  • 整个文档是一个文档节点

  • 每个 HTML 元素是元素节点, 例如<html>, <head>, <title> 等

  • HTML 元素内文本是文本节点

  • 每个 HTML 属性是属性节点, 例如<a>中属性href

  • 注释是注释节点

方法

  • getElementById()

返回带有指定ID元素

<button id = 'submitBtn'>提交</button>

const b = document.getElementById("submitBtn")
  • appendChild(node)

插入新子节点(元素)

  • removeChild(node)

删除子节点(元素)

  • createAttribute()

创建属性节点

  • createElement()

创建元素节点

  • createTextNode()

创建文本节点

  • getAttribute()

返回指定属性值

  • setAttribute()

把指定属性设置或修改为指定值

属性

  • innerHTML

节点(元素)文本值

  • parentNode

节点(元素)父节点

  • childNodes

节点(元素)子节点

  • attributes

节点(元素)属性节点

控件

<input type="text" id="name" />

<button type="button" id="addBtn"></button>

获取

获取控件ID

<button type="button" class="btn btn-success" id="" onclick=download()>下载</button>

点击按钮获取控件ID

function download(){
    const id = event.target.id
    $.get('/del/' + id, function () {
            location.reload()
            alert("删除成功")
    })
}

动态ID

当前为每行增加了一个 checkbox 控件, 希望其动态生成”checkout+序号” id, 方便后期对选择行进行操作

<td>
  <div class="checkbox">
    <label>
      <input type="checkbox" id="checkbox" />
    </label>
  </div>
</td>

此处为 jinja 模板, 其他如 JSP 等等与此大同小异

document.getElementById("id")

获取值

document.getElementById("id").value()

// div
document.getElementById("id").innerHTML

事件

const addBtn = document.getElementById("addBtn")

addBtn.addEventListener("click", ()=>{
    //...
})

弹窗

提示框回调

alert()

确认提示框

const msg = "内容?\n\n请确认!"

if (confirm(msg)){
    // ...
} else {
    // ...
}

输入提示框

const value = prompt("Input Text", "Default Text")

if (value != null && value != "") {
    alert(value)
}

HTTP

GET

function get(url, callback) {
    const XMLHttpRequest = require("xhr2")
    const httpRequest = new XMLHttpRequest()

    httpRequest.open("GET", url, true)
    httpRequest.send()
    httpRequest.onreadystatechange = () => {
        if (httpRequest.readyState == 4 && httpRequest.status == 200) {
            const json = httpRequest.responseText
            // ...
            callback()
        }
    };
}

POST

function post(url, data, callback){
    const XMLHttpRequest = require("xhr2")
    const httpRequest = new XMLHttpRequest()

    httpRequest.open('POST', url, true)
    httpRequest.setRequestHeader("Content-type", "application/json")
    // 转为JSON字符串
    httpRequest.send(JSON.stringify(data))
    httpRequest.onreadystatechange = ()=> {
        if (httpRequest.readyState == 4 && httpRequest.status == 200) {
            const result = httpRequest.responseText
            callback(result)
        }
    }
}

JQ语法

<input type="text" id="name" />

<button type="button" id="addBtn"></button>

获取控件

利用$(“#id”)获取的是一个[object Object]

$("#id")[0]  

$("#id").get(0)

获取值

$("#id").val();

事件

$("#addBtn").click(functon(){
    //...
})

匿名函数

function(){}

HTTP请求

$.get(URL, callback)

$.post(URL, data, callback)

封装 Ajax

参数 含义
type 请求方式
url 发送的 url
parm 发送的数据
callback 回调函数
// 发送ajax请求
function sendAjax(type, url, param, callback) {
    $.ajax({
        async: false, 
        ache: false, 
        type: type, 
        url: url, 
        // 将发送的数据转换为JSON字符串
        data: JSON.stringify(param), 
        // 服务端返回数据的格式
        dataType: "json", 
        success: function (data) {
            callback(data.result)
        },
        error: function () {
        // 失败处理
    }, 
  })
}

获取表格值

<form method="post" action="" id="form">
    用户名: <input type="text" name="username" /><br />
    密码: <input type="text" name="pwd" /><br />
    <button type="submit" value="" id="submit_demo">提交</button>
</form>
function get_form_value() {
    var d = {};
    // serializeArray() 方法
    // 通过序列化表单值来创建对象(name 和 value)的数组
    const t = $("form").serializeArray();
    // .each() 对 jQuery 对象进行迭代, 为每个匹配元素执行函数
    $.each(t, function () {
        d[this.name] = this.value;
    })
    // 转换为JSON字符串
    return JSON.stringify(d);
}

$.each()函数

返回值 含义
return false break
return true continue