从零开始学 Web 之 DOM(二)对样式的操作,获取元素的方式

简介: 大家好,这里是「 Daotin的梦呓 」从零开始学 Web 系列教程。此文首发于「 Daotin的梦呓 」公众号,欢迎大家订阅关注。在这里我会从 Web 前端零基础开始,一步步学习 Web 相关的知识点,期间也会分享一些好玩的项目。

大家好,这里是「 Daotin的梦呓 」从零开始学 Web 系列教程。此文首发于「 Daotin的梦呓 」公众号,欢迎大家订阅关注。在这里我会从 Web 前端零基础开始,一步步学习 Web 相关的知识点,期间也会分享一些好玩的项目。现在就让我们一起进入 Web 前端学习的冒险之旅吧!

img_25336e0b5504f9a5b326090f41d9dcd7.png

1、对样式的操作

1.1、点击按钮设置 div 的宽高和背景颜色

<body>
<input type="button" value="显示颜色" id="btn">
<div id="dv"></div>

<script src="common.js"></script>
<script>
    my$("btn").onclick = function () {
        my$("dv").style.width = "200px";
        my$("dv").style.height = "100px";
        my$("dv").style.backgroundColor = "pink";
    };
</script>
</body>

凡是 css 属性时由多个单词构成的,那么在 js 中设置的时候需要把 "-" 去掉,然后除第一个单词的首字母大写即可。

比如:css里面的 background-color,在js里面的写法是 backgroundColor.

1.2、点击按钮隐藏和显示 div 标签

<body>
<input type="button" value="hide" id="btn">
<div id="dv" style="width: 200px; height: 100px; background-color: pink;"></div>

<script src="common.js"></script>
<script>
    my$("btn").onclick = function () {
        if(this.value === "hide") {
            my$("dv").style.display = "none";
            this.value = "show";
        }else if(this.value === "show") {
            my$("dv").style.display = "block"; // block是显示标签
            this.value = "hide";
        }
    };
</script>
</body>

1.3、网页开关灯

<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .cls {
            background-color: #000;
        }
    </style>
</head>
<body class="">
<input type="button" value="ON/OFF" id="btn">

<script src="common.js"></script>
<script>
    my$("btn").onclick = function () {
        document.body.className = document.body.className !== "cls" ? "cls" : "";
    };
</script>
</body>

document.body 可以选中 body 标签。

1.4、阻止超链接默认跳转

<body>
<!--方式一-->
<a href="http://www.baidu.com" onclick="alert('------'); return false;">百度</a>

<!--方式二-->
<a href="http://www.baidu.com" onclick="return f1()">百度</a>

<script>
    function f1() {
        alert("---------");
        return false;
    }
</script>

<!--方式三-->
<a href="http://www.baidu.com" id="ah">百度</a>
<script>
    document.getElementById("ah").onclick = function () {
        alert("------");
        return false;
    };

<!--方式四-->
<a href="http://www.baidu.com" id="ah">百度</a>
<script>
    document.getElementById("ah").onclick = function (e) {
        alert("------");
        e.preventDefault();
    };
</script>
</body>

阻止超链接的跳转:返回给 onclick 事件一个return false,而不单单是 false。

方式二:当使用内联 js 的时候,onclick 里面是 f1() 而不是 f1。是函数的执行,而不是函数体本身。但是在外面写 js 的时候,赋值给 onclick 的是函数体本身,认不是函数的执行。

方式二中之所以加 return,是因为 f1() 执行后返回的是 false,而不是 return false,所以要加一个 return。

方式四:调用事件参数对象的 preventDefault() 方法:e.preventDefault(); 可以阻止超链接跳转。注意 IE8 不支持。

1.5、点击小图在小图下显示大图

<a href="images/2.JPG" id="ah"><img src="images/Daotin.png"></a>
<img src="" id="im">
<script src="common.js"></script>
<script>
    my$("ah").onclick = function () {
        my$("im").src = this.href;
        return false;
    };
</script>

使用 return false; 阻止链接原本的跳转。

1.6、列表高亮显示

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        ul {
            list-style: none;
            cursor: pointer;
        }
    </style>
</head>
<body>
<ul>
    <li>哈哈哈</li>
    <li>哈哈哈</li>
    <li>哈哈哈</li>
</ul>

<script src="common.js"></script>
<script>
    var liObjs = document.getElementsByTagName("li");

    for(var i=0; i<liObjs.length; i++) {
        // 鼠标进入事件
        liObjs[i].onmouseover = function () {
            this.style.backgroundColor = "pink";
        };
        // 鼠标离开事件
        liObjs[i].onmouseout = function () {
            this.style.backgroundColor = ""; // 空表示恢复之前的颜色
        };
    }
</script>
</body>
</html>

1.7、通过 name 属性获取元素

<input type="button" value="按钮" id="btn"><br>
<input type="text" value="lvonve" name="nm1"><br>
<input type="text" value="lvonve" name="nm2"><br>
<input type="text" value="lvonve" name="nm1"><br>
<input type="text" value="lvonve" name="nm3"><br>
<input type="text" value="lvonve" name="nm1"><br>

<script src="common.js"></script>
<script>
    my$("btn").onclick = function () {
        var inputs = document.getElementsByName("nm1");

        for (var i = 0; i < inputs.length; i++) {
            inputs[i].value = "Daotin";
        }
    };
</script>

通过 name 属性获取元素适用于表单标签,基本标签没有 name 属性

基本标签:div,p,h1,ul,li,br

表单标签:input, select,option,form,textarea,datalist,label

1.8、根据类样式的名字获取元素

<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .cls {
            background-color: yellow;
        }
    </style>
</head>
<body>
    <p class="cls">第一个p标签</p>
    <p>第二个p标签</p>
    <span class="cls">第一个span</span><br>
    <span>第二个span</span>
    <div>第一个div</div>
    <div class="cls">第二个div</div>
    <input type="button" value="按钮" id="btn">

    <script src="common.js"></script>
    <script>
        my$("btn").onclick = function () {
            var objs = document.getElementsByClassName("cls");

            for(var i=0; i<objs.length; i++) {
                objs[i].style.backgroundColor = "red";
            }
        };
    </script>
</body>

注意:getElementsByClassName 在IE8等低版本浏览器不支持。

2、获取元素的方式总结

1、根据 id 的属性的值获取元素,返回值是一个元素对象

document.getElementById("id属性的值");

2、根据标签名获取元素,返回值是包含多个元素对象的伪数组

document.getElementsByTagName("标签名字");

3、根据 name 属性的值获取元素,返回值是包含多个元素对象的伪数组

document.getElementsByName("name属性的值");

4、根据 class 类样式的名字获取元素,返回值是包含多个元素对象的伪数组

document.getElementsByClassName("class类样式的值");

5、根据 CSS 选择器获取元素,返回值是一个元素对象

document.querySelector("#id属性的值");
document.querySelector("标签的名字");
document.querySelector(".class类样式的值");

6、根据 CSS 选择器获取元素,返回值是包含多个元素对象的伪数组

document.querySelectorAll("#id属性的值");
document.querySelectorAll("标签的名字");
document.querySelectorAll(".class类样式的值");

注意区分是名字还是值。

3、案例:模拟搜索框

<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        input {
            color: gray;
        }
    </style>
</head>
<body>
    <input type="text" value="请输入搜索内容">

    <script src="common.js"></script>
    <script>
        // 获取文本框对象
        var inputObj = document.getElementsByTagName("input")[0];

        // 为文本框注册获取焦点事件
        inputObj.onfocus = function () {
            if(this.value === "请输入搜索内容") {
                this.value = "";
                this.style.color = "#000";
            }
        };

        // 为文本框注册失去焦点事件
        inputObj.onblur = function () {
            if(this.value.length === 0) {
                this.value = "请输入搜索内容";
                this.style.color = "gray";
            }
        };
    </script>
</body>

文本框注册失去焦点事件的时候使用 this.value.length === 0,而不使用 this.value === "请输入搜索内容" 是因为数字的比较比字符串的比较效率更高。

img_25336e0b5504f9a5b326090f41d9dcd7.png

img_44cd409fb9a85d884c4a306cf455f565.png

目录
相关文章
|
25天前
|
前端开发
震惊!Web 前端行内元素和块级元素的 “巅峰对决”,究竟谁能主宰页面布局?
【8月更文挑战第26天】在Web前端开发中,掌握行内元素与块级元素的区别十分重要。块级元素如`&lt;p&gt;`、`&lt;div&gt;`等,特性为自动换行并可设置宽高;而行内元素如`&lt;span&gt;`则在同一行显示且无法直接设置宽高。二者默认样式亦不同,但可通过CSS调整显示方式,灵活应用于页面布局设计中,实现更优视觉效果。
31 1
|
28天前
|
XML JavaScript 前端开发
哇塞!Web 前端惊现 DOM 元素神操作,一场惊心动魄的网页变革,你准备好了吗?
【8月更文挑战第23天】在Web前端开发中,熟练操作DOM元素至关重要。DOM作为一种编程接口,将HTML/XML文档表示为节点树,便于使用JavaScript访问及修改文档内容与结构。
43 0
|
29天前
|
XML JavaScript 测试技术
Web自动化测试框架(基础篇)--HTML页面元素和DOM对象
本文为Web自动化测试入门指南,介绍了HTML页面元素和DOM对象的基础知识,以及如何使用Python中的Selenium WebDriver进行元素定位、操作和等待机制,旨在帮助初学者理解Web自动化测试中的关键概念和操作技巧。
36 1
|
28天前
|
JavaScript 前端开发 API
前端开发者的救赎:揭秘JQ对象与DOM元素的神秘转换术
【8月更文挑战第23天】在Web前端开发领域,jQuery(简称JQ)作为一款流行的JavaScript库,极大简化了HTML文档遍历、事件处理、动画及Ajax交互等操作。理解和掌握jQuery对象与DOM元素间的转换至关重要。
27 0
|
1月前
|
JavaScript 前端开发
DOM的概念?获取html元素的方法有哪些?
DOM的概念?获取html元素的方法有哪些?
28 0
|
1月前
|
JavaScript 前端开发 API
如何访问 DOM 中的元素
如何访问 DOM 中的元素
16 0
|
1月前
|
JavaScript
如何在 Angular 中使用 ViewChild 来访问子组件、指令或 DOM 元素
如何在 Angular 中使用 ViewChild 来访问子组件、指令或 DOM 元素
16 0
|
2月前
|
JavaScript 前端开发
Web Components详解-Shadow DOM样式控制
Web Components详解-Shadow DOM样式控制
62 3
|
2月前
|
JavaScript 前端开发 API
前端框架与库 - jQuery基础与DOM操作
【7月更文挑战第18天】jQuery 是一个简化JavaScript任务的库,以其“write less, do more”理念著称。核心功能包括DOM操作、事件处理和Ajax。DOM操作如选择元素(`$(&quot;p&quot;)`、`$(&quot;#myDiv&quot;)`、`$(&quot;.myClass&quot;)`)、创建及添加元素、修改属性和内容。事件处理如绑定(`click`)和触发(`trigger`)。常见问题涉及`$`符号冲突(使用`jQuery`代替)、异步加载管理和选择器性能优化。了解并规避这些问题能提升jQuery使用效率。
23 0
|
前端开发 程序员 Android开发
好程序员web前端培训分享HTML元素强制不换行
好程序员web前端培训分享HTML元素强制不换行,HTML 中 nowrap是用来强制不换行的   在排版中   对包裹plain text的标签使用nowrap属性即刻实现强制不换行.   如:   强制不换行   强制不换行   在使用div的超文本中   把div,h1,section,na...
1289 0