WebApi编程(一)-DOM

本文详细介绍了JavaScript的基本DOM操作,包括通过ID、标签、类名获取元素,以及事件基础和事件处理程序。同时展示了如何改变元素内容、属性、样式,以及操作元素样式的多种方法。此外,还提供了文本框聚焦和失焦时的文本显示与恢复的实例,帮助读者深入理解JavaScript在页面交互中的应用。

1.js组成
基本语法掌握后,我们要学习DOM和BOM,页面交互功能在这里插入图片描述
API: 就是一个接口,一些预定义的函数。
2.DOM(文档对象模型)
文档:一个页面就是一个文档,document
元素:网页中的标签都是元素,element
节点:网页中的内容就是节点,node
①获取网页元素

<!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>
</head>
<body>
    <div id='xiaodi'>小邸</div>
    <ul>
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
        <li>5</li>
    </ul>
    <ul id="nav">
        <li>6</li>
        <li>7</li>
        <li>8</li>
        <li>9</li>
        <li>0</li>
    </ul>

    <div class="hezi">盒子1</div>
    <div class="hezi">盒子2</div>

    <!--此处的js需要写在下面,因为页面加载从上往下-->
    <script>
        // 1.通过Id获取
        var byid = document.getElementById('xiaodi');
        console.dir(byid);
        // 2.通过标签获取
        // byelement是存放所有标签的数组,获取直接遍历
        var byelement = document.getElementsByTagName('li');
        // 这样操作会获得所有的li标签,我只想获取上边的怎么办呢


        // 可以先通过id来获取
        var nav = document.getElementById('nav');
        var nav_li = nav.getElementsByTagName('li');
        console.log(nav_li[0]);

        // 3.html5新增,支持ie9以上的类名获取
        var byclass = document.getElementsByClassName('hezi');
        console.log(byclass);
        // 4.querySelector返回第一个元素,任何选择器
        var first = querySelector('.hezi');
        var first1 = querySelector('#id');
        // 或者使用querySelectorAll()全部获取

        // 特殊元素html和body
        var bodyele = document.body;
        var htmlele = document.documentElement;
    </script>
</body>
</html>

②事件基础
出发响应机制,分为三个部分,分别为事件源,事件类型,事件处理程序。
事件源就是谁触发事件,类型就是什么样的事件,处理程序就是干什么。

<!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>
</head>
<body>
    <button id="btn">点击弹出对话框</button>
    <div id="nav">你中奖了!</div>
    <script>
        // 获取事件源
        var btn = document.getElementById('btn');
        // 触发事件包括点击,鼠标经过,键盘,滚轮等等
        btn.onclick = function() {
            alert('出来了');
        }
        var nav = document.getElementById('nav');
        nav.onclick = function() {
            alert('中了');
        }
    </script>
</body>
</html>

③操作元素

<!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>
</head>
<body>
    <button id="btn">点击</button>
    <div id="box">点击按钮出时间</div>
    <p>不点也能获取</p>
    <div id="box1"></div>
    <script>
        // 1.改变元素内容innerText,不识别html标签
        var btn = document.querySelector('#btn');
        btn.onclick = function() {
            var box = document.querySelector('#box');
            // 改变内容
            box.innerText = getTime();
        }
        // 不要点击刷新直接得到时间
        var p = document.querySelector('p');
        p.innerText = getTime();


        function getTime() {
            var date1 = new Date();
            var date2 = date1.getFullYear() + '年' + (date1.getMonth() + 1) + '月' + date1.getDate() + '日' + date1.getHours() + '时' + date1.getMinutes() + '分' + date1.getSeconds() + '秒' + ' 星期' + date1.getDay();
            return date2;
        }

        // 2.innerHtml识别html标签
        var box1 = document.querySelector('#box1');
        // box1.innerText = '<strong>加粗文字</strong>'; // 不好使,不识别
        box1.innerHTML = '<strong>加粗文字</strong>';

        // 两种操作元素的方法都可以获得元素内容和修改元素


        // 
    </script>
</body>
</html>

④改变元素属性

<!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>
</head>
<body>
    <button id="xi">喜羊羊</button>
    <button id="lan">懒洋洋</button>
    <div>
        <img src="C:\java-script_learning\image\xi.jpg" title="喜羊羊">
    </div>
    <button id="btn">获取</button>
    <input type="text" value="输入内容">
    <script>
        // 切换图片
        var xi = document.querySelector('#xi');
        var lan = document.querySelector('#lan');
        var image = document.querySelector('img');
        lan.onclick = function() {
            image.src = 'C:\\java-script_learning\\image\\lan.jpg';
            image.title = '懒洋洋';        }
        xi.onclick = function() {
            image.src = 'C:\\java-script_learning\\image\\xi.jpg';
            image.title = '懒洋洋';
        }
        
        // 改变文本框内容
        var btn = document.querySelector('#btn');
        var input = document.querySelector('input');
        btn.onclick = function() {
            input.value = '别输入';
            btn.disabled = true;
        }
        
    </script>
</body>
</html>

简单得密码隐藏和显示例子

<!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>
        .box {
            position: relative;
            width: 400px;
            border-bottom: 1px solid #ccc;
            margin: 100px auto;
        }
        .box input {
            width: 370px;
            height: 30px;
            border: 0;
            outline: 0;
        }
        .box img {
            width: 20px;
            height: 20px;
            top: 25px;
            right: 2px;
            position: absolute;
        }
    </style>
</head>
<body>
        <div class="box">
            用户名<input type="text" id="name"><br>
        </div>
        <div class="box">
            <label for="">
                <img src="C:\java-script_learning\image\yanj1.jpg" alt="">
            </label>
            密码<input type="password" id="pass">
        </div>
        <script>
            var pass = document.querySelector('#pass');
            var btn = document.querySelector('button');
            var image = document.querySelector('img');
            flag = 0;
            image.onclick = function() {
                if(flag == 0) {
                    pass.type = 'text';
                    image.src = 'C:\\java-script_learning\\image\\yanj2.jpg';
                    flag = 1;
                }else {
                    pass.type = 'password';
                    image.src = 'C:\\java-script_learning\\image\\yanj1.jpg';
                    flag = 0;
                }
            }

        </script>
</body>
</html>

⑤操作元素样式

<!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>
        div {
            width: 300px;
            height: 200px;
            background-color: skyblue;
        }
    </style>
</head>
<body>
    <div></div>
    <script>
        // 点击盒子变颜色,操作样式
        var box = document.querySelector('div');
        box.onclick = function() {
            box.style.backgroundColor = '#ccc';
        }
    </script>
</body>
</html>

或者

<!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>
        .change {
            background-color: aqua;
            color: brown;
            font-size: large;
        }
    </style>
</head>
<body>
    <div>
        哈哈
    </div>
    <script>
        var box = document.querySelector('div');
        box.onclick = function() {
            // 增加类名给样式
            this.className = 'change';
        }
    </script>
</body>
</html>

文本消失复原案例

<!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>
</head>
<body>
    <input type="text" value="手机">
    <script>
        var te = document.querySelector('input');
        // onfocus获取焦点
        te.onfocus = function() {
            if(te.value === '手机') {
                te.value = '';
            }else {
                te.value = te.value;
            }
        }
        // onblur失去焦点
        te.onblur = function() {
            if(te.value === '') {
                te.value = '手机';
            }
        }
    </script>
</body>
</html>

总结
在这里插入图片描述

、源码特点       1、先进的 HTTP 编程模型: 使用新的强类型的 HTTP 对象模型直接操作 HTTP 请求和响应, 在 HTTP客户端使用相同的编程模型和 HTTP 管道;       2、支持路由: Web API 完整支持 ASP.NET 路由, 包括路由参数和约束。 此外, 到动作的映射支持约定, 从此将不再需要向类或者方法添加类似于 [HttpPost] 之类的属性;       3、内容协商: 客户端与服务端可以起决定 API 返回数据的格式。 默认支持 XML, JSON 以及 Form URL-Encoded 格式, 可以扩展添加自定义格式, 甚至可以替换掉默认的内容协商策略;       4、模型绑定与验证: 模型绑定器可以轻易地从 HTTP 请求中提取数据并转换成在动作方法中使用的 .Net 对象;       5、过滤: Web API 支持过滤, 包括总所周知的 [Authorize] 过滤标记, 可以为 Action 添加并插入自定义过滤, 实现认证、异常处理等;       6、查询聚合: 只要简单的返回 Iqueryable , Web API 将会支持通过 OData 地址约定进行查询;       7、改进的 Http 细节可测试性: Web API 不是将 HTTP 细节设置到个静态的 Context 对象上, 而是使用 HttpRequestMessage 和 HttpResponseMessage 实例, 可以使用这些对象的泛型版本为这些 Http 类型添加自定义类型;       8、改进的依赖反转 (IoC) 支持: Web API 使用 MVC Dependency Resolver 实现的服务定位器模式在不同的场景下来获取实例;       9、基于代码的配置: Web API 单独使用代码完成配置, 从而保证了配置文件的整洁;       10、自托管 (Self-Host) : Web API 除了可以托管在 IIS 中, 还可以托管在进程中,依旧可以使用路由以及其它的特性。 二、注意事项       1、开发环境为Visual Studio 2012,数据库为SqlServer2008,使用.net 4.0开发。
### Web API、BOM 和 DOM 的区别 #### 定义与范围 Web API 是指系列由浏览器提供的接口集合,允许开发者通过编程方式与浏览器环境进行交互。它的范畴非常广泛,涵盖了从页面操作到网络请求的各种功能[^3]。具体而言,DOM(Document Object Model)和 BOM(Browser Object Model)都可以看作是 Web API 的子集。 - **DOM (Document Object Model)** DOM 主要关注的是 HTML 或 XML 文档的表现形式及其可操作性。它将整个文档视为棵树形结构,在这棵树中,每个节点代表文档的部分(比如标签、属性或文本)。借助 DOM 接口,开发者能够轻松实现诸如获取特定元素、修改其内容或是为其绑定事件等功能[^1]。 - **BOM (Browser Object Model)** 相较之下,BOM 更侧重于处理整个浏览器窗口的行为特性而非单网页本身。典型例子包括调整窗口大小、打开/关闭新标签页、读取地理位置信息等等。尽管早期并没有严格意义上的“标准”,但随着 ECMAScript 标准化进程推进,许多原本属于传统意义上 BOM 功能已被纳入更广泛的 Web APIs 中[^2]。 #### 技术层面差异对比 | 特性 | DOM | BOM | |-----------------|-----------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------| | **主要作用** | 表达并操控HTML/XML文档结构 | 控制浏览器行为 | | **核心对象** | `document` | `window`, `navigator`, `screen`, etc | | **应用场景举例** | - 获取指定ID的元素<br>- 改变某个DIV的颜色<br>- 添加新的段落到现有页面 | - 打开个新的弹窗<br>- 检测当前用户的地理坐标 | 值得注意的是,虽然理论上我们可以区分二者职责边界清晰与否,但在实际编码过程中往往难以完全分开考虑——因为很多情况下我们需要同时依靠两者完成任务。例如当我们想让某个按钮触发全屏预览图片效果时,既需要用到 DOM 来定位该按钮及目标图像位置,也可能要用到某些来自 BOM 的能力来管理视图切换逻辑[^4]。 最后值得提的是,无论是 DOM 还是 BOM,它们最终都需要通过某种脚本语言去调用才能发挥作用;而在当今主流前端生态系统里,这个角色毫无疑问是由 JavaScript 承担起来的[^5]。 ```javascript // 示例代码展示如何结合使用DOM与BOM function toggleFullScreen(elementId){ let elem = document.getElementById(elementId); // 使用DOM查找元素 if (!document.fullscreenElement && !document.mozFullScreenElement && !document.webkitFullscreenElement) { if(elem.requestFullscreen){ // 利用BOM控制屏幕状态变化 elem.requestFullscreen(); }else{ alert("您的浏览器不支持全屏模式"); } } else { if(document.exitFullscreen){ document.exitFullscreen(); // 结束全屏显示 } } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值