python 之 前端开发( DOM操作)

11.47 DOM操作

查找节点:

11.471 直接查找
document.getElementById           //根据ID获取唯一一个标签
document.getElementsByClassName   //根据class属性获取一系列标签
document.getElementsByTagName     //根据标签名获取一系列标签
11.472 间接查找
语法 含义
childNodes 获取所有的子节点,除了元素还有文本等
children 获取所有元素子节点,不包含文本
parentNode 获取父节点
previousSibling 获取上一个兄弟节点,不包含文本
previousElementSibling 获取上一个兄弟元素节点,包含文本
nextSibling 获取下一个兄弟节点,不包含文本
nextElementSibling 获取下一个兄弟元素节点,包含文本
firstChild 获取第一个子节点,不包含文本
firstElementChild 获取第一个子节点,包含文本
lastChild 获取最后一个子节点,不包含文本
lastElementChild 获取父元素最后一个元素节点,包含文本
11.473 增加节点
1、创建新节点
var divEle = document.createElement(‘div‘);
2、追加一个子节点(放到最后)
父节点.appendChild(新的子节点);
3、插入一个子节点(插入到某个节点前)
父节点.insertBefore(新的子节点,某个节点);
4、克隆节点
要复制的节点.cloneNode();       //括号里不带参数和带参数false:只复制节点本身,不复制子节点。
要复制的节点.cloneNode(true);   //带参数true:既复制节点本身,也复制其所有的子节点。
11.474 删除、替换节点
父节点.removeChild(要删除的子节点);
父节点.replaceChild(新的子节点, 某个子节点); 
11.475 修改/设置节点属性
1、获取文本节点的值:
var divEle = document.getElementById("d1")
divEle.innerText                            //只查看所有标签内的文本
divEle.innerHTML                            //查看所有子标签,包括文本和子标签
2、设置文本节点的值:
var divEle = document.getElementById("d1")
divEle.innerText="1"                //先清空节点内容,再添加文本(字符串:‘<h1>我是h1</h1>‘)
divEle.innerHTML="<p>2</p>"         //先清空节点内容,可识别文本内的html标签(标签:‘<h1>我是h1</h1>‘)
3、attribute操作
var divEle = document.getElementById("d1");
divEle.setAttribute("age","18")
divEle.getAttribute("age")
divEle.removeAttribute("age")
4、自带的属性还可以直接.属性名来获取和设置
imgEle.src
imgEle.src="..."
11.476 获取元素的值
适用于input、select、textarea标签
var x=document.getElementById(‘input‘)
var y=document.getElementById(‘select‘)
var z=document.getElementById(‘textarea‘)
x.value
y.value
z.value
11.477 class操作
var x=document.getElementById(‘div1‘)
?
x.classList.remove(‘col1‘)          //x.classList里删除class=‘col1‘
x.classList.add(‘col1‘)             //x.classList里添加class=‘col1‘
x.classList.contains(‘col1‘)        //x.classList里是否有class=‘col1‘
x.classList.toggle(‘col1‘)          //没有就添加,返回true,有就删除,返回false
11.478 css操作
obj.style.backgroundColor="red"                         //此处设置的是行内样式
1.对于没有中横线的CSS属性一般直接使用style.属性名即可 如:
obj.style.margin
obj.style.width
obj.style.left
obj.style.position
2.对含有中横线的CSS属性,将中横线后面的第一个字母换成大写即可 如:
obj.style.marginTop
obj.style.borderLeftWidth
obj.style.zIndex
obj.style.fontFamily
11.479 事件

HTML 4.0 的新特性之一是有能力使 HTML 事件触发浏览器中的动作(action),比如当用户点击某个 HTML 元素时执行一段JavaScript。下面是一个属性列表,这些属性可插入 HTML 标签来定义事件动作。

1、常用事件

onclick        当用户点击某个对象时调用的事件句柄。
ondblclick     当用户双击某个对象时调用的事件句柄。
?
onfocus        元素获得焦点。               // 输入框
onblur         元素失去焦点。               //应用场景:用于表单验证,用户离开某个输入框时,代表已经输入完了,我们可以对它进行验证.
onchange       域的内容被改变。             //应用场景:通常用于表单元素,当元素内容被改变时触发.(select联动)
?
onkeydown      某个键盘按键被按下。          //应用场景: 当用户在最后一个输入框按下回车按键时,表单提交.
onkeypress     某个键盘按键被按下并松开。
onkeyup        某个键盘按键被松开。
onload         一张页面或一幅图像完成加载。
onmousedown    鼠标按钮被按下。
onmousemove    鼠标被移动。
onmouseout     鼠标从某元素移开。
onmouseover    鼠标移到某元素之上。
?
onselect      //在文本框中的文本被选中时发生。
onsubmit      ///确认按钮被点击,使用的对象是form。

2、绑定方式

方式一:

行内绑定:直接通过div被点击来修改自身样式:

<body>
<div id="div1" onclick="changeColor(this)"> 我是div,点我 </div>
<script>                                                  //this是实参,表示触发事件的当前元素
  function changeColor(ths) {
    ths.style.backgroundColor="green";                      //函数定义过程中的ths为形参
  }
</script>
</body>

通过button被点击来修改另一个div标签样式:

<body>
<input type="button" id="b1" value="开关" onclick="change()">
<div class="c1 bg-red"></div>
<script>                                              //<script>必须放在div定义后,可以放在body里
    function change() {
        var c1Ele = document.getElementsByClassName("c1")[0]; // 找到c1这个标签
        c1Ele.classList.toggle("bg-green");                  // 修改classList
    }
</script>
</body>

方式二:

直接绑定匿名函数:直接通过div被点击来修改自身样式:

<body>
<div id="div1">来,点亮我的绿</div>
<script>
    var oDiv = document.getElementById(‘div1‘);
    oDiv.onclick = function() {
        this.style.backgroundColor = ‘red‘;
    }
</script>
</body>

通过button被点击来修改另一个div标签样式:

<body>
<input type="button" id="b2" value="开关">
<div class="c1 bg-red"></div>
<script>
    function change() {
        var c1Ele = document.getElementsByClassName("c1")[0]; // 找到c1这个标签
        c1Ele.classList.toggle("bg-green");                 // 修改classList
    }
    var b2Ele = document.getElementById("b2");               // 通过JS代码绑定事件
    b2Ele.onclick = ()=>{
        change();
    }
</script>
</body>

方式三:

先单独定义函数,再绑定

<div id="box1" ></div>
<script>
    var div1 = document.getElementById("box1");
    div1.onclick = fn;              //注意,这里是fn,fn代表的是整个函数,fn()指的是返回值。
    function fn() {                 //单独定义函数
        alert("我是弹出的内容");
    }
</script>
11.4791 定时器

<body>
<input type="button" id="b1" value="开始">
<input type="button" id="b2" value="停止">
<input type="text" id="i1">
<script>
    var t;
    function showTime() {
        var now = new Date();            // 将当前时间填写到i1中
        var i1Ele = document.getElementById("i1");
        i1Ele.value = now.toLocaleString();
    }
    showTime();                         //1找到开始按钮,给它绑定事件,点击后每隔1秒执行一次showTime()
    var b1Ele = document.getElementById("b1");
    b1Ele.onclick = function () {
        if (!t){
           t = setInterval(showTime, 1000);
        }
    };
    var b2Ele = document.getElementById("b2");//2找到停止按钮,给它绑定事件,点击之后就清除定时器
    b2Ele.onclick = function () {
        clearInterval(t);             // 清除的是定时器,
        console.log(t);
        t = undefined;               //t只是一个普通的变量,它保存了定时器的id值,清除定时器后t中还有值
    };
</script>
</body>

定时器

11.4792 输入框聚焦

<body>
<input type="text" id="i1" value="海飞丝">
<input type="text" id="i2" value="辣条" onfocus="f1(this);" onblur="f2(this);">
<script>                                    //this指的是当前事件的标签对象
    //方式一
    function f1(ths) {
        ths.value = "";
    }
    function f2(ths) {
        ths.value = "辣条";
    }
?
    //方式二
   var i1Ele = document.getElementById("i1");
   i1Ele.onfocus = function () {                // 给i1设置获取光标的事件
       this.value = "";
   };
   i1Ele.onblur = function () {
       this.value = "海飞丝";                   // 给i1设置失去光标的事件
   }
</script>
</body>

11.4793 select联动

<body>
<select id="province">
    <option>请选择省:</option>
</select>
<select id="city">
    <option>请选择市:</option>
</select>
<script>
    var s1Ele = document.getElementById("province");
    var s2Ele = document.getElementById("city");
    var data = {"上海": ["黄浦区", "静安区"], "北京": ["朝阳区", "海淀区"], "山东": ["威海市", "烟台市"]};
    for (let k in data) {               // 将省直辖市数据填充到第一个select中
        //console.log(k);
        let tmp = document.createElement("option");
        tmp.innerText = k;
        s1Ele.appendChild(tmp);          // 将创建的tmp添加到第一个select中
    }
    s1Ele.onchange = function () {      // 当第一个select框的值发生变化之后才去更新第二个select框
        s2Ele.innerHTML = "";           //第二次选择区时清空第二个select框的option选项
        let p = document.createElement("option");//恢复默认选项‘请选择省市‘
        p.innerText = "请选择市";
        s2Ele.appendChild(p);
        //console.log(this.value);
        let provine = this.value;       //拿到选择的省或直辖市
?
        // 将province对应的区信息 填充到第二个select中
        for (let i = 0; i < data[provine].length; i++) {
            let tmp = document.createElement("option");
            tmp.innerText = data[provine][i];
            s2Ele.appendChild(tmp);
        }
    }
</script>
</body>

原文地址:https://www.cnblogs.com/mylu/p/11380035.html

时间: 2024-10-09 03:21:36

python 之 前端开发( DOM操作)的相关文章

python 之 前端开发(盒子模型、页面布局、浮动、定位、z-index、overflow溢出)

11.312 盒子模型 HTML文档中的每个元素都被比喻成矩形盒子, 盒子模型通过四个边界来描述:margin(外边距),border(边框),padding(内填充),content(内容区域),如果把一个盒子比喻成一个壁挂相片,那么 外边距margin ===== 一个相框与另外一个相框之间的距离 边框border ====== 边框指的就是相框 内边距padding ===== 相片与边框的距离 宽度width/高度height ===== 指定可以存放相片的区域 1.css显示模式:块级

前端之DOM操作

一.概念 javascript javascript是一种脚本语言,可以被浏览器解析,所以它可以称之为前端的三把利器之一. javascript跟java没有半毛钱关系. 声明局部变量:使用关键字var 应用场景:当Selenium定位不到元素时,就要使用js代码来定位了. Dom Document object model文档对象模型 它就是把死板的标签变成可以通过方法调用的对象,对象里面囊括了页面里的所有元素.功能. 通过Dom提供的调用方式,来操纵这个页面当中的元素.类似于对象,它可以调用

python 之 前端开发( JavaScript变量、数据类型、内置对象、运算符、流程控制、函数)

11.4 JavaScript 11.41 变量 1.声明变量的语法 // 1. 先声明后定义 var name; // 声明变量时无需指定类型,变量name可以接受任意类型 name= "egon"; ? // 2. 声明立刻定义 var age = 18; 2.变量名命名规范 1.由字母.数字.下划线.$ 组成,但是不能数字开头,也不能纯数字2.严格区分大小写3.不能包含关键字和保留字(以后升级版本要用的关键字).如: abstract.boolean.byte.char.clas

Python之路day13 web 前端(JavaScript,DOM操作)

参考链接:http://www.cnblogs.com/wupeiqi/articles/5433893.html day13 1. CSS示例 2. JavaScript 3. DOM操作 上节内容回顾: 1. HTML标签 html/head/body/ input div,span a p br span table > tr行 th表头列 td表头列 h form> action method enctype=;;; select option input系列: text passwo

移动前端开发之数据库操作篇

在移动平台开发中,经常会有大数据存储与交互的操作,在以webkit为内核的浏览器中,提供了一个叫作WEBSQL的数据库.这让我们前端也可以像php等程序语言一样,进行数据库的读写操作.Web Storage存储本地数据的方法目前可以在许多主流浏览器.平台与设备上实现,与之相关的API也已经标准化,但是,Web Storage存储空间是有5MB,键值存储的方式带来诸多不便,未来本地存储也不仅仅是这一种方法.其中最为熟知的就是Web SQL数据库,它内置SQLite数据库,对数据库的操作可以通过调用

前端页面卡顿?或是DOM操作惹的祸,需优化代码

文档对象模型(DOM)是一个独立 于特定语言的应用程序接口.在浏览器中,DOM接口是以JavaScript语言实现的,通过JavaScript来操作浏览器页面中的元素,这使得 DOM成为了JavaScript中重要的组成部分.在富客户端网页应用中,界面上UI的更改都是通过DOM操作实现的,并不是通过传统的刷新页面实现 的.尽管DOM提供了丰富接口供外部调用,但DOM操作的代价很高,页面前端代码的性能瓶颈也大多集中在DOM操作上,所以前端性能优化的一个主要的关注 点就是DOM操作的优化.DOM操作

HTML5移动开发之路(36)——jQuery中的DOM操作

本文为 兄弟连IT教育 机构官方 HTML5培训 教程,主要介绍:HTML5移动开发之路(36)--jQuery中的DOM操作 1.查询 利用选择器查找节点 使用 html() / text() / attr() 输出节点文本和属性值. 注意:下拉列表使用 val() [html] view plain copy print? <html> <head> <script src="http://ajax.googleapis.com/ajax/libs/jquery

JS前端开发判断是否是手机端并跳转操作(小结)

JS前端开发判断是否是手机端并跳转操作(小结) 这篇文章主要介绍了JS前端开发判断是否是手机端并跳转操作,非常不错,具有参考借鉴价值,需要的朋友可以参考下 常用跳转代码 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 <script type="text/javascript">  // borwserR

前端性能优化---DOM操作

小结 1缓存DOM对象 场景:缓存DOM对象的方式也经常被用在元素的查找中,查找元素应该是DOM操作中最频繁的操作了,其效率优化也是大头.在一般情况下,我们会根据需要,将一些频繁被查找的元素缓存起来,在查找它或查找它的子孙元素时,以它为起点进行查找,就能提高查找效率了. var ulNode = document.getElementById("container"); 2在内存中操作DOM元素 由于DOM操作会导致浏览器的回流,回流需要花费大量的时间进行样式计算和节点重绘与渲染,所以