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" οnclick="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="开关" οnclick="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="辣条" οnfοcus="f1(this);" οnblur="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>
View Code
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>
View Code

转载于:https://www.cnblogs.com/mylu/p/11380035.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值