从零开始JavaScript学习第13天笔记:DOM的应用

一.事件(event)中的this

当一个事件被触发时,事件处理函数(也称为事件监听器)被调用,并且this关键字将指向触发该事件的元素。这使得我们可以在事件处理函数内部访问和操作当前元素。

1.传统function函数

在function函数中,this还是指谁调用了它那么this就是谁。

// 获取元素
const button = document.querySelector("button");

// 添加click事件监听器
button.addEventListener("click", function() {
  // 在事件处理函数中,this指向触发事件的元素(button)
  console.log("Clicked element:", this);
  this.style.backgroundColor = "red";
});

这里的this就是指button

2.箭头函数

箭头函数的this关键字与普通函数的this关键字有所不同。在事件处理函数中使用箭头函数时,this关键字会继承自外部作用域,而不是指向触发事件的元素。

const button = document.querySelector('button');
button.addEventListener('click', () => {
  console.log(this); // 输出:Window { ... }
});

二.DOM中对表单的操作

1.获取表单元素

可以使用document.getElementById()或document.querySelector()等方法来获取表单元素

const form = document.getElementById('myForm');

2.获取/设置表单字段的值

可以使用value属性来获取或设置表单字段的值

const input = document.getElementById('myInput');
const inputValue = input.value; // 获取输入框的值
input.value = 'New Value'; // 设置输入框的值为'New Value'

3.提交表单

可以使用submit()方法来提交表单。

let form = document.getElementById('myForm');
form.submit(); // 提交表单

4.阻止表单默认行为

let form = document.getElementById('myForm');
form.addEventListener('submit', (event) => {
  event.preventDefault(); // 阻止表单提交
});

5.监听表单字段的变化

const input = document.getElementById('myInput');
input.addEventListener('input', (event) => {
  console.log(event.target.value); // 输出输入框的值
});

三.BOM操作

BOM(浏览器对象模型)提供了许多操作浏览器窗口和页面的API。

1.弹窗操作

BOM提供了alert()、confirm()和prompt()方法来创建三种类型的弹窗对话框。alert()用于显示简单的警告消息,confirm()用于显示确认对话框,并返回用户的选择结果,prompt()用于显示提示对话框,用户可以在其中输入信息。

alert('Hello World');
const result = confirm('Are you sure?');
const name = prompt('Please enter your name');

2.窗口和标签页操作

使用window对象可以操作当前窗口或标签页。例如,可以使用open()方法打开新的窗口或标签页,使用close()方法关闭当前窗口或标签页,使用print()方法打印当前页面。

window.open('https://www.baidu.com', '_blank');
window.close();
window.print();

3.导航操作

location对象来操作浏览器的URL。可以使用location.href获取当前页面的URL,使用location.assign()跳转到新的URL,使用location.reload()重新加载当前页面。

let currentURL = location.href;
location.assign('https://www.baidu.com');
location.reload();

4.历史记录操作

使用history对象可以操作浏览器的历史记录。可以使用history.back()返回上一页,使用history.forward()前进到下一页,使用history.go()跳转到指定的历史记录位置。

history.back();
history.forward();
history.go(-2); // 返回两个历史记录位置

5.定时器操作

BOM提供了setTimeout()和setInterval()方法来创建定时器。setTimeout()在一段时间后执行一次回调函数,setInterval()每隔一段时间执行一次回调函数。

setTimeout(() => {
  console.log('Hello World');
}, 1000);

setInterval(() => {
  console.log('Hello World');
}, 1000);

6.navigator

它提供了有关浏览器和用户代理的信息。navigator对象包含了许多属性,用于获取浏览器的相关信息。

7.window.screen

window.screen是BOM中的一个对象,它提供了有关用户屏幕的信息。

网站常见效果应用

1.工作表单隔行变色效果

1.表单隔行变色

隔行变色

   //获取所有的tbody中tr元素
        //遍历 隔一行写一种颜色
        var arr = document.querySelectorAll("#tb1 tbody tr")
        console.log(arr)
        for (let i = 0; i < arr.length; i++) {
            if (i % 2 == 1) {
                arr[i].style.backgroundColor = "blue"
            } else if (i % 2 == 0) {
                arr[i].style.backgroundColor = "green"
            }
        }

2.表单点击行变色

  <script>
        //获取所有的tbody下 tr元素
        //给每一个tr设置点击事件
        //点了谁  谁的背景颜色就改变 之前点过的要变回去
        //排他设计思想: 如果有一种设计同类型的效果有一个是有差异的 希望每次改变差异选项 然后被改过的差异项复位
        //先把所有的选项复位 然后排他
        var arr2 = document.querySelectorAll("#tb2 tbody tr")
        for (let i = 0; i < arr2.length; i++) {
            arr2[i].onclick = function () {
                //把所有的tr全部改成之前颜色
                for (let j = 0; j < arr2.length; j++) {
                    arr2[j].style.backgroundColor = "white"
                }
                this.style.backgroundColor = "#999999"
            }
        }
    </script>

3.表单点击列变色

<script>
        Object.prototype.indexof = function () {
            var arr = this.parentNode.children //调用者的所有兄弟
            for (let i = 0; i < arr.length; i++) {
                if (arr[i] === this) {
                    return i
                }
            }
        }
        //获取所有的tbody td
        //遍历 绑定点击事件
        //算出当前点击的元素 是父元素的第x个儿子
        //遍历所有的tr  把他们的第x个儿子变色
        var arr3 = document.querySelectorAll("#tb3 tbody td")
        var arr4 = document.querySelectorAll("#tb3 tbody tr")
        for (let i = 0; i < arr3.length; i++) {
            arr3[i].onclick = function () {
                // console.log(this)
                var index = this.indexof()
                console.log(index)
                //复位
                for (let g = 0; g < arr3.length; g++) {
                    arr3[g].style.backgroundColor = "white"
                }
                //排他
                for (let j = 0; j < arr4.length; j++) {
                    arr4[j].children[index].style.backgroundColor = "#999999"
                }
            }
        }
    </script>

2.拖拽效果

类似于将一个盒子拖着走的效果

<body>
    <style>
        body {
            margin: 0px;
            background: #999999;
        }

        .box {
            width: 400px;
            height: 300px;
            border-radius: 10px;
            background-color: white;
            position: absolute;
            left: 200px;
            top: 100px;
            cursor: pointer;
        }
    </style>
    <div class="box">
    </div>
    <script>
        let box = document.querySelector(".box")
        box.onmousedown = function (e) {
            box.style.cursor = "move"
            //按下时 记录 盒子的位置 按下时鼠标的位置
            let boxX = parseFloat(getComputedStyle(box).left)
            let boxY = parseFloat(getComputedStyle(box).top)
            let mouseX = e.clientX
            let mouseY = e.clientY
            document.onmousemove = function (e2) {
                console.log(e2)
                box.style.left = boxX + e2.clientX - mouseX + "px"
                box.style.top = boxY + e2.clientY - mouseY + "px"
            }
        }
        document.onmouseup = () => {
            document.onmousemove = null;
            box.style.cursor = "pointer"
        }

    </script>
</body>

3.前端表单验证

在前端开发中,表单验证是一项常见的任务,用于确保用户输入的数据符合预期的格式和要求。

<body>
    <form id="myForm" onsubmit="validateForm(event)">
        邮箱:<input type="email" id="email" required><br/>
        密码:<input type="password" id="name" required><br/>
        <input type="submit" value="Submit">
      </form>
      
      <script>
        function validateForm(event) {
          event.preventDefault(); // 阻止表单提交
      
          // 获取表单字段的值
          const name = document.getElementById('name').value;
          const email = document.getElementById('email').value;
      
          // 检查字段是否为空
          if (name.trim() === '' || email.trim() === '') {
            alert('请填写所有字段');
            return;
          }
      
          // 检查邮箱格式是否正确
          const emailRegex = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;
          if (!emailRegex.test(email)) {
            alert('请输入有效的邮箱地址');
            return;
          }
      
          // 执行其他操作,如提交表单数据给后端
          console.log('表单验证通过');
          // ...
        }
      </script>
      
</body>

4.图片放大器

body>
    <style>
        .goodsbox {
            width: 300px;
            height: 168.75px;
            background-color: saddlebrown;
            position: absolute;
            left: 100px;
            top: 100px;
            background-image: url("./img/1.jpg");
            background-size: 300px 168.75px;
            cursor: move;
        }

        .mask {
            width: 40px;
            height: 40px;
            background-color: rgba(251, 195, 31, 0.5);
            position: absolute;
            left: 100px;
            top: 20px;
            display: none;
        }

        .goodsbox:hover .mask {
            display: block;
        }

        .big {
            position: absolute;
            left: 420px;
            top: 100px;
            width: 370px;
            height: 370px;
            overflow: hidden;
            display: none;
        }

        .img1 {
            width: 2775px;
            height: 1560.9375px;
            position: absolute;
            /* left: -10px; */
        }
    </style>


    <div class="goodsbox">
        <div class="mask"></div>
    </div>

    <div class="big">
        <img class="img1" src="./img/1.jpg" alt="">
    </div>
    <script>
        let goodsbox = document.querySelector(".goodsbox")
        let mask = document.querySelector(".mask")
        let img1 = document.querySelector(".img1")
        let big = document.querySelector(".big")
        goodsbox.onmouseenter = function () {
            big.style.display = "block"
        }
        goodsbox.onmouseleave = function () {
            big.style.display = "none"
        }

        goodsbox.onmousemove = function (e) {
            console.log(e.clientX)
            let x = e.clientX - goodsbox.offsetLeft - mask.offsetWidth / 2
            let y = e.clientY - goodsbox.offsetTop - mask.offsetHeight / 2

            if (x <= 0) {
                x = 0
            }
            if (x >= (300 - 40)) {
                x = 300 - 40
            }
            if (y <= 0) {
                y = 0
            }
            if (y >= 168.75 - 40) {
                y = 168.75 - 40
            }
            mask.style.left = x + "px"
            mask.style.top = y + "px"
            img1.style.left = -x * 370 / 40 + "px"
            img1.style.top = -y * 370 / 40 + "px"
        }
        // 300*(370/40)
    </script>
</body>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: HTML DOM(文档对象模型)是一种编程接口,允许程序访问和操作HTML文档中的元素。使用JavaScript来操作HTML DOM可以让网页具有交互性和动态性。 在JavaScript中,可以使用getElementById,getElementsByTagName和getElementsByClassName等方法来获取页面上的元素。例如,通过getElementById("myId")可以获取id为"myId"的元素。 操作元素的属性和内容也很简单,可以使用如下方法: - 修改元素的属性:element.attribute = new value - 访问元素的属性:element.attribute - 修改元素的内容:element.innerHTML = new content - 访问元素的内容:element.innerHTML 通过操作HTML DOM,可以实现各种交互效果和动态效果。例如,可以在点击按钮时显示或隐藏元素,或在输入框中输入文本时实时更新页面内容等。 ### 回答2: HTML DOMJavaScript操作网页中元素和属性的主要方式之一。在HTML DOM中,文档元素是指HTML页面中所有元素的根节点。文档元素的操作包括获取元素、创建元素、删除元素、修改元素属性等。 获取元素是HTML DOM操作的重要一环。在JavaScript中,可以使用getElementById()、getElementsByTagName()、getElementsByClassName()等方法获得HTML页面中的元素。其中getElementById()方法可以通过元素的ID获取该元素的引用,常用于根据ID修改元素的属性或内容。而getElementsByTagName()方法可以通过标签名获取HTML页面中所有该标签的元素,例如获取所有的h1元素,常用于对整个页面的控制。getElementsByClassName()方法可以通过class属性获取HTML页面中所有具有该class的元素。 创建元素是向HTML页面中添加元素的重要方式。可以使用createElement()方法创建一个新元素,然后使用appendChild()方法将其添加到现有元素中。例如,创建一个新的p元素,并将其添加到body元素中可以使用以下代码: var newPara = document.createElement("p"); var textNode = document.createTextNode("This is a new paragraph."); newPara.appendChild(textNode); document.body.appendChild(newPara); 删除元素也是HTML DOM中的一个常用操作。可以使用removeChild()方法删除现有元素,例如: var parent = document.getElementById("parent-id"); var child = document.getElementById("child-id"); parent.removeChild(child); 修改元素属性是HTML DOM中的另一个核心操作。可以使用setAttribute()方法修改元素的属性值,例如: var element = document.getElementById("my-id"); element.setAttribute("class", "new-class"); 可以通过HTML DOM操作文档元素,实现对页面元素和属性的各种操作。掌握HTML DOM的知识,可以更好地控制和管理HTML页面。 ### 回答3: HTML DOMJavaScript操作网页元素的主要方式之一,它的核心在于文档对象模型(DOM,Document Object Model),需要熟悉DOM才能灵活操作网页元素。文档元素是HTML页面中的根元素,它是其他所有元素的祖先元素,也是HTML DOM操作的基础。 一、获取元素 在JavaScript中,我们可以通过各种方式来获取文档元素,例如getElementById()、getElementsByTagName()、getElementsByClassName()等。其中,通过id、标签名和类名获取元素是最常用的三种方法。 1. getElementById() 此方法用于获取具有指定id属性的元素,其语法为document.getElementById(id)。id属性在整个HTML文档中应该是唯一的。 示例:获取id为“demo”的元素 ``` var demo = document.getElementById("demo”); ``` 2. getElementsByTagName() 此方法用于获取具有指定标签名的元素,其语法为document.getElementsByTagName(tagname)。 示例:获取所有p元素 ``` var pList = document.getElementsByTagName("p"); ``` 3. getElementsByClassName() 此方法用于获取具有指定类名的元素,其语法为document.getElementsByClassName(classname)。 示例:获取类名为“red”的元素 ``` var redList = document.getElementsByClassName("red"); ``` 二、改变元素 有很多种方法可以改变文档元素的属性和样式,下面列举一些常见的方法: 1. 修改元素的文本内容 我们可以通过innerHTML属性和innerText属性来修改元素的文本内容。 innerHTML属性用于改变元素的HTML内容,其语法为element.innerHTML=new html content; innerText属性用于改变元素的纯文本内容,其语法为element.innerText=new text content; 2. 修改元素的样式 我们可以通过style属性来修改元素的样式,其中style属性包含了元素的所有样式属性。 示例:将id为“demo”的元素背景色改为红色 ``` document.getElementById("demo").style.backgroundColor = "red"; ``` 3. 创建新元素 我们可以使用document.createElement()方法来创建新元素,并通过appendChild()方法将其加入到指定的元素内。 示例:创建一个新的p元素 ``` var newP = document.createElement("p"); ``` 4. 删除元素 我们可以使用parentNode.removeChild()方法来删除指定的元素。 示例:删除id为“demo”的元素 ``` var demo = document.getElementById("demo"); demo.parentNode.removeChild(demo); ``` 三、总结 通过这篇文章的学习,我们了解了HTML DOM的基础知识和基本操作方法,例如获取元素、改变元素的属性和样式以及创建和删除元素等。掌握这些操作方法可以帮助我们更好地操作网页元素,从而实现丰富多彩的网页效果。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值