DOM操作元素例题

1,一个京东简易登录,密码框可以隐藏和显示,主要练习获取表单元素的方法

 <head>
 <style>
        .dl {
            text-align: center;
        }

        .zh {
            width: 200px;
            height: 30px;
            margin: 20px auto;
            border-bottom: 1px solid #ccc;
        }

        .zh input {
            width: 200px;
            height: 25px;
            border: none;
            outline: none;
        }

        .mm {
            position: relative;
            width: 200px;
            height: 30px;
            margin: 20px auto;
            border-bottom: 1px solid #ccc;
        }

        .mm input {
            width: 120px;
            height: 25px;
            border: none;
            outline: none;
        }

        .mm img {
            position: absolute;
            top: 5px;
            right: 50px;
            width: 20px;
            height: 20px;
        }

        .mm a {
            float: right;
            margin-top: 5px;
            font-size: 10px;
            text-decoration: none;
        }
        h3 {
            text-align: center;
        }
    </style>
</head>

<body>
    <div class="dl">
        <h4>京东登录</h4>
    </div>
    <div class="zh">
        <input type="text" placeholder="账号">
    </div>
    <div class="mm">
        <input id="mmk" type="password" placeholder="密码">

        <label for=""><img src="close.png" alt="" id="eye"> </label>

        <a href="">忘记密码</a>

        <script>
            var inp = document.getElementById('mmk');
            var img = document.getElementById('eye');
            var flag = false;
            img.onclick = function () {
                if (flag == false) {
                    inp.type = 'text';
                    img.src = 'open.png';
                    flag = true;
                } else {
                    inp.type = 'password';
                    img.src = 'close.png';
                    flag = false;
                }
            }

        </script>
    </div>
    <h3><a href="">登录</a></h3>
</body>

2,做两个按钮,一个睁眼,一个闭眼,点击睁眼是睁眼图片,点击闭眼是闭眼图片

    <img src="close.png" alt=""><br>
    <button id="by">闭眼</button>
    <button id="zy">睁眼</button>
    <script>
        var by = document.getElementById('by'); 
        var zy = document.getElementById('zy');
        var img = document.querySelector('img'); //获取以上三个事件源
        zy.onclick = function() { //事件类型:点击
            img.src = 'open.png'; //事件处理:改变图片地址
        }
        by.onclick = function () {
            img.src = 'close.png';
        }
    </script>

3,做一个切换按钮,改变眼睛 睁眼闭眼状态

    <img src="close.png" alt=""><br>
    <button>切换</button>
    <script>
        var btn = document.querySelector('button'); 
        var img = document.querySelector('img'); 
        var flag = true;
        btn.onclick = function() {
            if (flag) {           
                img.src = 'open.png';
                flag = false;
            } else {
                img.src = 'close.png';
                flag = true;
            }
        }
    </script>

4,隐藏密码案例:在input输入框后面放可以隐藏 input文本内容的眼睛

 

    <style>
        input {
            float: left;
            width: 170px;
            height: 20px;
        }
        img {
            width: 24px;
            height: 24px;
        }
    </style>



<body>
    <input type="password" alt="">
    <img src="close.png">
    <script>
        var inp = document.querySelector('input');
        var img = document.querySelector('img');
        var flag = true;
        img.onclick = function () {
            if (flag) {
                img.src = 'open.png';
                inp.type = 'text'
                flag = false;
            } else {
                img.src = 'close.png';
                inp.type = 'password';
                flag = true;
            }
        }
    </script>
</body>

5,隐藏密码:在input输入框里面靠后放入一个眼睛图片(或字体图标),这样隐藏或显示文本内容

——还未解决,不知怎么在输入框里放图片或字体图标——

6,点击X按钮,整个二维码隐藏起来 (用到js里修改样式的方法 .style  注意可以在css样式里给 X号添加一个鼠标样式 cursor:pointer;)

    <script>
        var btn = document.querySelector('.btn');
        var ewm = document.querySelector('.ewm');
        btn.onclick = function() {
            ewm.style.display = 'none';
        }
    </script>

7,用dom操作元素+for循环实现 精灵图快速定位

    <style>
        ul {
            margin: 50px auto;
            width: 260px;
            height: 200px;

        }

        ul li {
            float: left;
            list-style: none;
            width: 24px;
            height: 24px;
            margin: 20px 20px;
            background: url(sprite.png) no-repeat; /*精灵图放在这里*/
        }
    </style>
    <script>
        var lis = document.querySelectorAll('li');
        for (var i = 0; i < lis.length; i++) {
            var index = 44 * i; //注意相邻精灵图之间的距离,加上精灵图的高可以得出每个精灵图y坐标的距离
            lis[i].style.backgroundPosition = '0 -' + index + 'px';//注意是lis[i],
        }

    </script>

8.显示和隐藏文本框内容 onfoucs和onblur

<script>
        var inp = document.querySelector('input');
        inp.onfocus = function () {
            if (this.value == '手机') {
                this.value = ''; //将value值清空,而不是用display隐藏
            }
            this.style.color = '#333';   //默认文本颜色是#999,输入时文本颜色用#333更清楚
        }
        inp.onblur = function () {
            if (this.value == '') {
                this.value = '手机';
            }
            this.style.color = '#999';
        }

 </script>

9,开关灯

    <script>
        var btn = document.querySelector('button');
        var body = document.querySelector('body');
        var flag = true;//定义flag的true false可以确定是开还是关
        btn.onclick = function () {
            if (flag) { 
                body.style.backgroundColor = 'black';
                flag = false;//如果是真就改背景为黑色,改flag为false,不然下次点击flag还是真
            } else {
                body.style.backgroundColor = 'white';
                flag = true; //flag 为假也是同理
            }
        }
    </script>

10.仿世纪佳缘 账号密码 输入框效果,——做出来了但有疑问——

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        input {
            width: 130px;
            height: 22px;
            padding-left: 5px;
            color: rgb(170, 170, 170);
            outline: none;
            border: 1px solid rgb(217, 217, 217);
        }

        .inp-bor {
            border: 1px solid rgb(255, 214, 219);
        }
        .inp-txt {
            color: rgb(51, 51, 51);
        }
        button {
            width: 70px;
            height: 25px;
            border: none;
            color: #eee;
            background-color: rgb(0, 152, 194);
        }
    </style>
</head>

<body>
    <div class="sjjy">
        <input id="inp1" type="text" value="邮箱/ID/手机号">
        <input id="inp2" type="text" value="密码">
        <button>登录</button>
    </div>
    <script>
        var inp1 = document.getElementById('inp1');
        var inp2 = document.getElementById('inp2');
        var btn = document.querySelector('button');
        inp1.onfocus = function () {
            if (inp1.value == '邮箱/ID/手机号') {
                                                   //3
                inp1.value = '';
                inp1.className = 'input inp-bor'; //1 和 2 两行是一样的,我觉得应该可以都不要直接写到3处,但是最后显示效果却又不一样。写在3处后,比如在文本框输入一个数字后,外面点一下,再点回文本框,border不变红,文字
            } else {
                inp1.className = 'input inp-txt';
                inp1.className = 'input inp-bor'; //2
            }
        }
        inp1.onblur = function() {
            inp1.className = 'input';
            if (inp1.value == '') {
                inp1.value = '邮箱/ID/手机号';
            } else {
                inp1.className = 'input inp-txt';
            }
        }
    </script>
</body>

</html>

10,新浪导航下拉菜单

 html+script代码部分:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="index.css">
</head>

<body>
    <div class="tl">
        <!-- 这是主导航栏nav -->
        <div class="nav">
            <!-- 这是主导航栏左侧 nav_left -->
            <div class="nav_left">
                <ul>
                    <li><a href="">设为首页</a></li>
                    <li><a href="">手机新浪网</a></li>
                    <li><a href="">移动客户端</a>
                        <dl>
                            <dt><a href="">新浪微博</a></dt>
                            <dt><a href="">新浪新闻</a></dt>
                            <dt><a href="">新浪财经</a></dt>
                            <dt><a href="">新浪体育</a></dt>
                            <dt><a href="">黑猫投诉</a></dt>
                            <dt><a href="">新浪博客</a></dt>
                            <dt><a href="">新浪游戏</a></dt>
                            <dt><a href="">新浪众测</a></dt>
                            <dt><a href="">新浪邮箱客户端</a></dt>
                        </dl>
                    </li>
                </ul>
            </div>
            <!-- 这是主导航栏右侧 nav_right -->
            <div class="nav_right">
                <ul>
                    <li><a href="">登录</a></li>
                    <li><a href="">微博</a>
                        <dl>
                            <dt><a href="">私信</a></dt>
                            <dt><a href="">评论</a></dt>
                            <dt><a href="">@我</a></dt>
                        </dl>
                    </li>
                    <li><a href="">博客</a>
                        <dl>
                            <dt><a href="">博客评论</a></dt>
                            <dt><a href="">博客提醒</a></dt>
                        </dl>
                    </li>
                    <li><a href="">邮箱</a>
                        <dl>
                            <dt><a href="">免费邮箱</a></dt>
                            <dt><a href="">VIP邮箱</a></dt>
                            <dt><a href="">企业邮箱</a></dt>
                            <dt><a href="">新浪邮箱客户端</a></dt>
                        </dl>
                    </li>
                    <li><a href="">网站导航</a></li>
                </ul>
            </div>

        </div>

    </div>
    <script>
        var lis = document.querySelectorAll('li');
        for (var i = 0; i < lis.length; i++) {
            lis[i].onmouseover = function() {
                this.children[1].style.display = 'block';
            }
            lis[i].onmouseout = function() {
                this.children[1].style.display = 'none';
            }
        }
    </script>
</body>

</html>

css代码部分:

* {
    padding: 0;
    margin: 0;
}

@font-face {
    font-family: 'icomoon';
    src: url('fonts/icomoon.eot?tr9v8m');
    src: url('fonts/icomoon.eot?tr9v8m#iefix') format('embedded-opentype'),
        url('fonts/icomoon.ttf?tr9v8m') format('truetype'),
        url('fonts/icomoon.woff?tr9v8m') format('woff'),
        url('fonts/icomoon.svg?tr9v8m#icomoon') format('svg');
    font-weight: normal;
    font-style: normal;
    font-display: block;
}

li {
    position: relative;
    list-style-type: none;
    display: inline;
    float: left;
}
a {
    text-decoration: none;
    display: block;
    font-size: 14px;
    color: rgb(76, 76, 76);
}

li>a {
    height: 50px;
    line-height: 50px;
    padding: 0 20px;
}
li>a:hover {
    color: rgb(255, 132, 0);
    background-color: rgb(237, 238, 240);
}
.nav_left li:nth-child(3)>a::after,
.nav_right li:nth-child(2)>a::after,
.nav_right li:nth-child(3)>a::after,
.nav_right li:nth-child(4)>a::after {
    content: '';
    font-family: 'icomoon';
    padding-left: 5px;
    color: rgb(255, 134, 5);
}

dl {
    display: none;
    position: absolute;
}

dt {
    border: 1px solid rgb(235, 190, 122);
    border-top: 0;
}

dt a {
    padding: 0 20px;
    width: 100px;
    height: 30px;
    line-height: 30px;
}
dt a:hover {
    color: rgb(255, 132, 0);
    background-color: rgb(255, 245, 218);
}


.tl {
    width: 100%;
    height: 50px;
    border-top: 2px solid rgb(255, 133, 0);
    border-bottom: 1px solid rgb(237, 238, 240);
    background-color: rgb(252, 252, 252);
}
.nav {
    width: 1000px;
    height: 100%;
    margin: 0 auto;
}
.nav .nav_left {
    float: left;
}
.nav .nav_right {
    float: right;
}

11.百度换肤(主要点在于路径更换的格式)

    <script>
        var imgs = document.querySelectorAll('img');
        // var body = document.querySelector('body'); //可以事先获取body 也可以document.body获取
        for (var i = 0; i < imgs.length; i++) {
            imgs[i].onclick = function () {
                document.body.style.backgroundImage = 'url(' + this.src + ')'; //注意此处路径的写法
            }
        }
    </script>

12,分别点亮按钮(排它思想)

    <script>
        var btns = document.getElementsByTagName('button');
        //btns得到的时伪元素,每一个元素就是btns[i]
        for (var i = 0; i < btns.length; i++) {
            btns[i].onclick = function () { 
                for (var j = 0; j < btns.length; j++) { //在点亮按钮之前先去掉所有按钮的背景色,以免出现多个按钮被点亮
                    btns[j].style.backgroundColor = '';
                }
                    this.style.backgroundColor = 'pink';
            }
        }
    </script>

13,表格单行高亮 (用排它思想)

    <script>
        var trs = document.querySelector('tbody').querySelectorAll('tr');
        for (var i = 0; i < trs.length; i++) {
            trs[i].onmouseover = function () {
                for (var j = 0; j < trs.length; j++) {
                    trs[j].style.backgroundColor = '';
                }
                    this.style.backgroundColor = 'pink';
            }
        }
    </script>

14,表单全选取消案例(重要,多看几次,不好理解)

<script>
        var hinp = document.getElementById('thinp');
        var binps = document.getElementById('tbinp').getElementsByTagName('input');
        hinp.onclick = function () {
            this.checked;
            for (var i = 0; i < binps.length; i++) {
                binps[i].checked = this.checked;
            }
        }
        for (var i = 0; i < binps.length; i++) { //这个for设置每个binps的点击事件
            binps[i].onclick = function () {
                var flag = true;
                for (var i = 0; i < binps.length; i++) { //这个for检查binps的每一个框是否被选中
                    if(!binps[i].checked) {
                        flag = false;
                        break; //只要有一个没有被checked,就可以直接退出循环,提高代码效率
                    }
                    hinp.checked = flag;
                }

            }
        }
</script>

15.京东详情页type栏切换效果(排它思想)

    <script>
        var lis = document.querySelector('.tb_list').querySelectorAll('li');
        var items = document.querySelectorAll('.item');

        for (var i = 0; i < lis.length; i++) {
            lis[i].setAttribute('date-index', i); //给lis设置自定义属性并赋值
            lis[i].onclick = function () {
                for (var i = 0; i < lis.length; i++) {
                    lis[i].className = '';
                }
                this.className = 'tb_list_curr';
                var index = this.getAttribute('date-index'); //获取自定义属性的值
                for (var i = 0; i < items.length; i++) {
                    items[i].style.display = 'none';
                }
                items[index].style.display = 'block';
            }

        }

    </script>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用 PySide2 或 PyQt5 中的 QWebEngineView 可以很方便地操纵 DOMHTML 元素。下面是一些基本的操作方法: 1. 获取页面中的元素 可以使用 `page().runJavaScript()` 方法执行 JavaScript 代码来获取 DOM 元素。 ```python # 获取元素的文本内容 def get_element_text(element_id): script = f"document.getElementById('{element_id}').textContent" def callback(result): print(result) view.page().runJavaScript(script, callback) # 获取元素的属性值 def get_element_attribute(element_id, attribute): script = f"document.getElementById('{element_id}').getAttribute('{attribute}')" def callback(result): print(result) view.page().runJavaScript(script, callback) ``` 2. 修改页面中的元素 可以使用 `page().runJavaScript()` 方法执行 JavaScript 代码来修改 DOM 元素。 ```python # 修改元素的文本内容 def set_element_text(element_id, text): script = f"document.getElementById('{element_id}').textContent = '{text}'" view.page().runJavaScript(script) # 修改元素的属性值 def set_element_attribute(element_id, attribute, value): script = f"document.getElementById('{element_id}').setAttribute('{attribute}', '{value}')" view.page().runJavaScript(script) ``` 3. 添加和删除元素 可以使用 `page().runJavaScript()` 方法执行 JavaScript 代码来添加和删除 DOM 元素。 ```python # 添加元素 def add_element(parent_id, tag_name, text): script = f""" var parent = document.getElementById('{parent_id}'); var element = document.createElement('{tag_name}'); element.textContent = '{text}'; parent.appendChild(element); """ view.page().runJavaScript(script) # 删除元素 def remove_element(element_id): script = f"document.getElementById('{element_id}').remove()" view.page().runJavaScript(script) ``` 以上是一些基本的操作方法,可以根据具体需求进行扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值