当前位置: 首页 > news >正文

JavaScript基础(BOM对象、DOM节点、表单)

BOM对象

浏览器介绍

BOM:浏览器对象模型

  • IE
  • Chrome
  • Safari
  • FireFox

三方

  • QQ浏览器
  • 360浏览器

window对象

window代表浏览器窗口

window.innerHeight
734
window.innerWidth
71
window.outerHeight
823
window.outerWidth
782

Navigator对象(不常用)

navigator.appName        //获得当前应用名
'Netscape'
navigator.appVersion        //当前浏览器的版本
'5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36 Edg/133.0.0.0'
navigator.userAgent        
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36 Edg/133.0.0.0'
navigator.platform        //获得系统版本
'Win32'

注:navigator对象,可被人为修改,不建议使用这些属性来判断和编写代码

screen代表屏幕的尺寸

screen.width
1536px
screen.height
864px

location代表当前页面的url信息

location

host: "www.baidu.com"        //主机

href: "https://www.baidu.com/"        //当前位置指向

protocol: "https:"        //协议

reload: ƒ reload()        //刷新网页方法

//设置新的地址

location.assign('http://xxx.xxx.com')

document当前页面信息

HTML DOM文档树

1.document.title        //获得标题信息

2.获取具体的文档树节点

<body>
<dl id="lean">
    <dt>Java</dt>
    <dd>JavaSE</dd>
    <dd>JavaEE</dd>
</dl>
<script>
    'use strict'
    let dl=document.getElementById('lean');
</script>
</body>

3.获取cookie

document.cookie

服务器端可以设置cookie:httpOnly

4.history代表浏览器的历史记录

history.back()        //后退

history.forward()        //前进

DOM节点

DOM:文档对象模型

浏览器网页就是一个DOM树形结构

  • 更新:更新Dom节点
  • 遍历Dom节点:得到Dom节点
  • 删除:删除一个Dom节点
  • 添加:添加一个新的节点

要操作一个Dom节点,就必须先要获得Dom节点

获得Dom节点

document.getElementsByTagName("标签名")

document.getElementById("id名")

document.getElementsByClassName("类名")

<body>
<h1>标题一</h1>
<p id="p1">p1</p>
<p class="p2">p2</p>
<script>
    var h1=document.getElementsByTagName("h1")//获得Hh1标签节点
    var p1=document.getElementById("p1");//获得id选择器p1的节点
    var p2=document.getElementsByClassName("p2");//获得类选择器p2的节点
</script>
</body>

 

父节点选择器名.children,根据父节点获取子节点 

father.children            //获取所有子节点

father.firstChild        //获取第一个子节点

father.lastChild        //获取最后一个子节点

nextSibling        //同一树级别上的下一个节点

以上为原生代码,后期使用jQuery

更新DOM节点

innerText:修改文本的值

id1.innerText='459'

innerHTML:可以解析HTML文本标签

id1.innerHTML='<strong>456<strong>'

style:修改样式,需要操作JS

注意:

  • 属性值使用字符串
  • -转驼峰命名
<body>
<div id="id1"></div>
<script>
    var id1=document.getElementById('id1');
    id1.innerText='abc';    //修改id1节点的文本内容为abc
</script>
</body>

id1.style.color='red'        //将id1节点字体修改为红色

应用:找到id

获取DOM节点,并设置样式

删除DOM节点

删除节点:

  1. 获取父节点
  2. 通过父节点删除自己

parentElement:获取父节点

p1.parentElement        //通过子节点获取父节点

removeChild():删除子节点

father.removeChild(p1)        //通过父节点father删除子节点p1

综上:

<body>
<div id="father">
    <h1>标题一</h1>
    <p id="p1">p1</p>
    <p class="p2">p2</p>
</div>
<script>
    var p1=document.getElementById("p1");//获得id选择器p1的节点
    var father=p1.parentElement;//找到p1的父节点并命名为father
    father.removeChild(p1)//删除父节点father的子节点p1
</script>
</body>

法二:通过父节点利用下标找到子节点

若想删除其中某个节点,如第一个节点,如下:

father.removeChild(father.children[0])

注意:删除多个节点时,children是时刻在变,下标会重新排序

插入DOM节点

我们获得某个DOM节点,假设这个DOM节点是空的,我们可以通过inner HTML就可以增加一个元素,若DOM节点原本就存在元素,不可用inner HTML,因为会导致原先的元素被覆盖。

appendChild():追加

list.appendChild(js)        //将js节点移动到list的子节点中

1.将id选择器js添加到list选择器的子节点中(在已存在的节点中操作)

createElement():创建新节点

2.创建新的节点

document.createElement()        //创建新标签

<body>
<p id="js">JavaScript</p>
<div id="list">
    <p id="se">JavaSE</p>
    <p id="ee">JavaEE</p>
    <p id="me">JavaME</p>
</div>
<script>
    var list=document.getElementById('list');
   var newP= document.createElement('p');//创建一个p标签
    newP.id='newP';//为p标签设置id为newP
   newP.innerText='Hello,World!';//为p标签添加文字
   list.appendChild(newP);//将id为newP节点添加到list节点下
</script>
</body>

创建一个标签节点:通过setAttribute(key,value)属性,可以设置任意的值

利用JS为背景设置颜色

//创建style标签
    var myStyle=document.createElement('style');//创建空style标签
    myScript.setAttribute('type','text/css');//设置标签内容
    myStyle.innerHTML='body{    background-color: red;}';//为body设置红色背景
    document.getElementsByTagName('head')[0].appendChild(myStyle);//将style节点设置到head节点下

insertBefore(newNode,targetNode):在目标节点前插入某节点

在list节点下的ee节点前插入js节点

list.insertBefore(js,ee);

<body>
<p id="js">JavaScript</p>
<div id="list">
    <p id="se">JavaSE</p>
    <p id="ee">JavaEE</p>
    <p id="me">JavaME</p>
</div>
<script >
    var js=document.getElementById('js');
    var list=document.getElementById('list');
    var ee=document.getElementById('ee');
//insertBefore(newNode,targetNode)
    list.insertBefore(js,ee);
</script>
</body>

操作表单(验证)

表单form也是DOM树内的一个节点

  • 文本框        text
  • 下拉框        select
  • 单选框        radio
  • 多选框        checkbbox
  • 隐藏域        hidden
  • 密码框        password

表单的目的:提交信息

DOM节点.value:获得要提交的信息

input_test.value

给表单赋值:

单选框与多选框取值:

1.错误示范:对于单选框和多选框,boy_radio.value只能取到当前的值

2.只能通过if判断,当单选框被选中时,boy_radio.checked会返回true,如下:

提交表单

未加密情况下,在抓包时,可以看见表单提交的信息

function aaa() {
        var uname=document.getElementById('username');
        var upwd=document.getElementById('pwd');
        console.log(uname.value);
        console.log(upwd.value);
    }

1.通过绑定事件onclick被点击,利用MD5加密

<head>
    <meta charset="UTF-8">
    <title>提交表单</title>
    <!--md5工具类-->
    <script src="https://cdn.bootcss.com/blueimp-md5/2.10.0/js/md5.min.js"></script>
</head>
<body>
<form action="#" method="post">
    <p>
        <span>用户名:<input type="text" id="username" name="username"></span>
    </p>
    <p>
        <span>密码:<input type="password" id="pwd" name="pwd"></span>
    </p>
    <!--绑定事件 onclick 被点击-->
    <button type="submit" onclick="aaa()">提交</button>
</form>
<script>
    function aaa() {
        var uname=document.getElementById('username');
        var upwd=document.getElementById('pwd');
        console.log(uname.value);
        console.log(upwd.value);
        //md5算法
        pwd.value=md5(pwd.value)
        console.log(upwd.value);
    }
</script>
</body>

2.利用onsubmit绑定一个提交检查的函数

onsubmit事件是HTML表单中的一个重要事件,它在表单提交时被触发。这个事件通常用于在发送数据到服务器之前执行JavaScript验证。

相关文章:

  • javascript-es6 (五)
  • redission的原理
  • JS UI库DHTMLX Suite 发布v9.1:具有行扩展器、多重排序、多用户后端等功能的网格
  • 《算法笔记》9.6小节 数据结构专题(2)并查集 问题 A: 通信系统
  • IO 和NIO有什么区别?
  • 2025.2.26总结
  • 机试刷题_面试题 08.08. 有重复字符串的排列组合【python】
  • 算法day1 dfs搜索2题
  • 智绘教:Windows平台上的高效悬浮窗画笔工具深度解析
  • mac 安装Eclipse,汉化及安装ERMaster
  • 搜索赋能:大型语言模型的知识增强与智能提升
  • mamba,mamba2环境搭建
  • # C/C++右移高位补0还是1?
  • eclipse配置Spring
  • 数据安全_笔记系列07:数据泄露防护(DLP)(监控与阻断敏感数据外泄)深度解析
  • AI创作教程:用deepseek和猫箱做互动故事游戏
  • NLP的预处理数据
  • 磁盘使用LVM方式挂载目录
  • 【xinference 词嵌入】embbeding 使用教程
  • 大白话Vue 双向数据绑定的实现原理与数据劫持技术
  • 明查| 新一代AI诊疗系统可3秒筛查13种癌症?没有证据
  • 5吨煤炭“瞬间蒸发”?掺水炭致企业损失千万,腐败窝案曝光
  • 从《让·桑特伊》到《追忆》,假故事的胜利
  • 比特币挖矿公司GRYP股价涨超171%:将与特朗普儿子创设的公司合并
  • 人民网评:守护健康证的“健康”,才有舌尖上的安全
  • 香港暂停进口美国北达科他州一地区禽肉及禽类产品