zoukankan      html  css  js  c++  java
  • DOM-02 (查找2,修改1)

    . 查找:

    1. 不需要查找就可以直接获得的元素

    2. HTML特征查找:

    3. 按节点间关系查找:

    4. 按选择器查找: 2个函数:

    (1). 只查找一个符合条件的元素:

    a. var 一个元素对象=任意父元素.querySelector("选择器")

    //查找 选择器

    b. 意为: 在指定的父元素范围内,查找符合选择器要求的子元素

    c. 返回值:

    1). 如果找到符合条件的元素,则仅返回第一个符合条件的元素对象

    2). 如果找不到符合条件的元素,会返回null

    d. 强调:

    1). .前可以写任意父元素,来限制只在这个父元素内查找,可缩小查找范围

    2). 选择器必须相对于.前的父元素向下写,不能包含.前的父元素

    比如: table下找tfoot下的最后一个td:

    table.querySelector("tfoot td:last-child") √

    table.querySelector(`table tfoot td:last-child`) ×

                    因为table下不会再有table所以找不到

    (2). 查找多个符合条件的元素对象:

    a. var 类数组对象=任意父元素.querySelectorAll("选择器")

    b. 意为: 在指定父元素下,查找所有符合选择器要求的元素对象

    c. 返回值:

    1). 如果找到返回包含多个符合条件的元素的类数组对象

    2). 如果找不到返回空类数组对象

    d. 强调:

    1). .前可以写任意父元素,来限制只在这个父元素内查找,可缩小查找范围

    2). 选择器必须相对于.前的父元素向下写,不能包含.前的父元素

    5. 示例: 购物车:

    6. 总结: 何时使用按HTML特征查找,何时使用按选择器查找:

    (1). 因为HTML特征查找功能虽然简单但是效率高!所以,如果查找条件简单单靠按HTML查找就能找到符合条件的元素时,一定首选按HTML特征查找

    (2). 如果查找条件复杂使用多个按HTML特征查找效率反而低不如换成用选择器查找一步到位效率反而高

    . 修改元素: 拿到一个元素后,我们可修改它的三样东西!

    1. 可获取或修改元素的内容

    (1). 获取或修改原始的HTML内容元素.innerHTML

    a. 获取原始HTML内容时: HTML代码里边写的是什么,我们拿到的就是什么!

    b. 修改原始HTML内容时: 如果给一段HTML代码片段,则代码片段会被浏览器解析,将解析后的结果显示到页面上给人看!

    (2). 获取或修改文本内容元素.textContent

    // 内容

    a. 获取纯文本内容: HTML代码片段去掉内嵌的标签和特殊符号,只保留纯文本的内容。

    b. 修改纯文本内容: 要修改内容中即使包含HTML片段,也不会被浏览器编译,而是将HTML代码片段直接显示到页面上。

    (3). 获取或修改表单元素的值:

    a. 问题表单元素多数是单标记没有结束标签一个标签就能起作用所以既没有innerHTML又没有textContent

    b. 今后只要获取或修改表单元素的值,都用: 元素.value

    2. 可获取或修改元素的属性

    (1). 字符串类型的HTML标准属性:

    a. 什么是HTML标准属性: HTML标准中规定的所有元素默认都有的属性

    b. 可用早期的核心DOM函数获取或修改HTML标准属性: 4个函数

    1). 元素.getAttribute("属性名") //获得当前元素上指定属性的属性值

      获得Html元素上的属性

    2). 元素.setAttribute("属性名", "新属性值") //修改元素上的指定属性值为新值

      修改 Html元素上的属性

    3). 元素.removeAttribute("属性名") //移除元素上指定名称的属性

       移除   Html元素上的属性

    4). 元素.hasAttribute("属性名") //判断当前元素上是否包含指定名称的属性

       (是否) Html元素上的属性

    d. 简写 出了可以使用核心DOM4个函数之外其实DOM提供了简化的方式

    1). HTML DOM: 常用属性提供的简化访问方式

    2). 其实HTML DOM标准已经将HTML标准属性提前放在了内存中的元素对象身上只不过属性值暂时为""

    3). 其实所有字符串类型的标准属性都可以用"元素.属性名"方式直接访问!

    原理:

    网页中的每个元素经过浏览器扫描后,都会在js程序内存中创建一个对应的元素对象存储元素的属性值。

    只不过连未提供属性值的其他HTML标准属性,也一起提前放在内存中的元素对象上备用,只不过这些暂时无效的HTML标准属性值暂时为""

    4). 包括:

    i. 获取属性值: 元素.属性名

    ii. 修改属性值: 元素.属性名="新值"

    iii. 移除属性值: 元素.属性名=""

    iv. 判断是否包含该属性: 元素.属性名!==""

    5). 特例: class属性:

    i. 问题: ECMAScript标准中已经规定了classjs语言的关键词,所以DOM标准无法继续使用"class"来表示元素的class属性

    ii. 解决: 今后只要想在DOM访问元素的class属性,必须更名为className

    元素.className="xxx" 就等效于操作<元素  class="xxx">

    (2). Bool类型的HTML标准属性

    a. 什么是Bool类型的HTML标准属性: 不需要给属性值,直接放在HTML元素上就起作用的属性。

    比如: <button disabled></button>

     禁用

     <input type="checkbox" checked/>

      勾选

     <select>

    ...

    <option selected></option>

       被选中

    ...

    <input type="text" readonly/>

      

          

    <select multiple>

    多个

    b. 原理: 浏览器扫描元素时,发现这种属性,就会在内存中创建元素对象时,自动设置这个属性的值为true反之如果在扫描时没有发现元素上有这种属性也会在内存中的对象身上添加这个属性,只不过,属性值默认为false

    c. 问题: 核心DOM 4个函数只能操作字符串格式的属性无法操作bool类型的属性所以核心DOM 4个函数不能操作bool类型的标准属性

    d. 解决: 只能用HTML .方式来访问! 且属性值必须是bool类型的true/false

    e. 示例: 分别使用核心DOM函数和HTML DOM操作bool类型的标准属性

    <body>

    <input id="chb" type="checkbox"/>

    <script>

    var chb=document.getElementById("chb");

    //获得chb是否被选中

    //错误: console.log(chb.getAttribute("checked"));

    //正确:

    console.log(chb.checked);//false

    //用程序选中chb

    //错误:chb.setAttribute("checked",true);

    //正确

    chb.checked=true;

    console.log(chb.checked);//true

    //用程序再次将chb取消选中

    //错误: chb.setAttribute("checked",false);

    chb.checked=false;

    console.log(chb.checked);//false

    </script>

    </body>

    f. CSS匹配不同状态的伪类:

    1). :checked   匹配勾选的元素

    2). :disabled  匹配禁用的元素

    3). :selected  匹配选中的下拉列表项

    (3). 自定义扩展属性

    3. 可获取或修改元素的样式

    (1). 修改一个元素的内联样式:

    a. js: 元素.style.css属性="属性值"

    b. 相当于在HTML中手动为元素添加style属性,其中定义css属性值

    <元素 style="css属性:属性值">

    2. 修改:

    (1). 内容:

    a. 如果获取或修改元素的内容几乎都首选innerHTML

    b. 只有在希望获得纯文本内容时,才被迫选择textContent

    c. 如果获取或修改表单元素的值都用.value

    (2). 属性:

    a. 字符串类型的HTML标准属性:

    1). 核心DOM4个函数:

    元素.getAttribute("属性名")

    元素.setAttribute("属性名","属性值")

    元素.removeAttribute("属性名")

    元素.hasAttribute("属性名")

    2). HTML DOM简写: ——首先

    元素.属性名

    元素.属性名="新值"

    元素.属性名=""

    元素.属性名!==""

    b. bool类型的HTML标准属性:

    1). 不能用核心DOM 4个函数来访问

    2). 只能用"元素.属性名"方式来访问

    3. 添加/删除

    4. 事件绑定:

    元素.on事件名=function(){

    //this->当前正在触发事件的这个元素对象

    //强调: 尽量不要使用外部的变量来获取当前元素

    }

  • 相关阅读:
    jquery过滤特殊字符及js字符串转为数字
    jquery.validate.js表单验证
    jquery 判断checkbox状态
    jquery.lazyload.js 图片延迟加载
    ASP.NET MVC 中使用用户控件——转
    ASP.NET MVC3关于生成纯静态后如何不再走路由直接访问静态页面--收藏没测
    jquery.validation.js 表单验证
    jquery表单验证插件 jquery.form.js-转
    .net 获取客户端Ip地址
    在IE中MVC控制器中返回JSON格式的数据时提示下载
  • 原文地址:https://www.cnblogs.com/codexlx/p/12461985.html
Copyright © 2011-2022 走看看