操作BOM对象

浏览器介绍

JavaScript和浏览器的关系?

JavaScrpit诞生就是为了能够让它在浏览器中运行!

BOM:浏览器对象模型

  • IE 6~11
  • Chrome
  • Safari
  • FireFox

第三方

  • QQ浏览器
  • 360浏览器

window

window代表 浏览器窗口

Navigator

Navigator,封装了浏览器的信息

  1. navigator.appName
  2. "Netscape"
  3. navigator.appVersion
  4. "5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36"
  5. navigator.userAgent
  6. "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36"
  7. navigator.platform
  8. "Win32"

大多数时候,我们不会使用navigator对象,因为会被人为修改

不建议使用这些属性来判断和编写代码

screen

  1. screen.width
  2. 1920px
  3. screen.height
  4. 1080px

location(重要)

location代表当前页面的URL信息

  1. href: "https://www.baidu.com/?tn=02003390_5_hao_pg"
  2. ancestorOrigins: DOMStringList
  3. origin: "https://www.baidu.com"
  4. protocol: "https:"
  5. host: "www.baidu.com"

document

document代表当前的页面,HTML DOM文档树

  1. document.title
  2. "百度一下,你就知道"
  3. document.title='你长得真好看'
  4. "你长得真好看"

获取具体的文档树节点

  1. <dl id='app'>
  2. <dt>Java</dt>
  3. <dd>JavaSE</dd>
  4. <dd>JavaEE</dd>
  5. </dl>
  6. <script>
  7. var dl = document.getElementById('app');
  8. </script>

获取Cookie

  1. document.cookie
  2. "PSTM=*******...";

history

history代表浏览器的历史记录

  1. history.back(); //后退
  2. history.forward(); //前进

操作DOM对象

核心

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

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

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

获得DOM节点

  1. //对应css选择器
  2. var h1 = document.getElementsByTagName('h1');
  3. var p1 = document.getElementById('p1');
  4. var p2 = document.getElementByClassName('p2');
  5. var father = document.getElementById('father');
  6. var childrens = father.children; //获取父节点下的所有子节点
  7. //father.firstChild
  8. //father.lastChild

更新节点

  1. <div id="id1">
  2. </div>
  3. <script>
  4. var id1= document.getElementById("id1");
  5. </script>

操作文本

  1. id1.innerText='456';//修改文本的值
  2. id1.innerHTML='<strong>123<strong>'//可以解析HTML文本标签

操作css

  1. id1.style.color = 'yellow'; //属性使用 字符串 包裹
  2. id1.style.fontsize = '20px'; //注意驼峰命名问题
  3. id1.style.padding = '2em';

删除节点

删除节点步骤:先获取父节点,在通过父节点删除自己

  1. <div id="father">
  2. <h1>标题一</h1>
  3. <p id="p1">p1</p>
  4. <p class="p2">p2</p>
  5. </div>
  6. <script>
  7. var self = document.getElementById('p1');
  8. var father = p1.parentElement;
  9. father.removeChild(self)
  10. //删除是一个动态的过程
  11. father.removeChild(father.children[0])
  12. father.removeChild(father.children[1])
  13. father.removeChild(father.children[2])
  14. </script>

注意:删除多个节点的时候,children是在时刻变化的,删除节点的时候一定要注意。

插入节点

我们获得了某个节点,假设这个dom节点是空的,我们通过innerHTML就可以增加一个元素了,但是这个DOM节点已经存在元素了,我们这样干会产生覆盖

追加:

  1. <script>
  2. var js = doument.getElementById('js');
  3. var list = doument.getElementById('list');
  4. list.appendChild(js); //追加到后面
  5. </script>

创建一个新的标签,实现插入

  1. <script>
  2. var js = doument.getElementById('js'); //已经存在的节点
  3. var list = doument.getElementById('list');
  4. //通过js创建一个新的节点
  5. var newP = document,createElement('p'); //创建一个p标签
  6. newP.id = 'newP';
  7. newP.innerText = "hello,world!";
  8. //创建一个标签节点
  9. var myScript = document.createElement('script');
  10. myScript.setAttribute('type','text/javascript');
  11. //可以创建一个Style标签
  12. var myStyle = document.createElement('style');//创建了一个空style标签
  13. myStyle.setAttribute('type','text/css');
  14. myStyle.innerHTML = 'body{back-ground-color:chartreuse;}';//设置标签内容
  15. document.getElementsByTagName('head')[0].appedChild(myStyle);
  16. </script>

insertBefore

  1. var ee= document.getElementById('ee');
  2. var js= document.getElementById('js');
  3. var list= document.getElementById('list');
  4. //要包含的子节点.insertBefore(newNode,targetNode)
  5. list.insertBefore(js.ee);

操作表单

表单是什么 form DOM 树

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

表单的目的是用来提交数据

获得要提交的信息

  1. <form action="post">
  2. <p>
  3. 用户名:<input type="text" id="username">
  4. </p>
  5. <!--多选框的值,就是定义好的value-->
  6. <p>
  7. 性别:<input type="radio" name="sex" value="man" id="boy">
  8. <input type="radio" name="sex" value="women" id="girl">
  9. </p>
  10. </form>
  11. <script>
  12. var input_text = document.getElementById('username');
  13. var boy_radio = document.getElementById('boy');
  14. var girl_radio = document.getElementById('girl');
  15. //得到输入框的值
  16. input_text.value
  17. //修改输入框的值
  18. input_text.value="123"
  19. //对于单选框,多选框等等固定的值,boy_radio.value只能取得当前的值
  20. boy_radio.checked; //查看返回的结果,是否为true,如果为true,则被选中
  21. boy_radio.checked = true; //赋值
  22. </script>

提交表单。md5加密密码,表单优化

  1. <form action='https://www.bilibili.com' method='post' onsubmit='return run()'>
  2. <p>
  3. 用户名:<input type='text' id='username' name='username'>
  4. </p>
  5. <p>
  6. 密码:<input type='password' id='input-password'>
  7. </p>
  8. <input type='hidden' id='md5-password' name='password'>
  9. <!--绑定事件 onclick 被点击-->
  10. <button type='submit'>提交</button>
  11. </form>
  12. <script>
  13. function run(){
  14. alert("冲");
  15. var username = document.getElementById('username');
  16. var pwd = document.getElementById('input-password');
  17. var md5pwd = document.getElementById('md5-password');
  18. md5pwd.value = md5(pwd.value);
  19. //可以效验判断表单内容,true就是通过提交,false阻止提交
  20. return true
  21. }
  22. </script>

JavaScript,你好!(二)的更多相关文章

  1. 学习javascript数据结构(二)——链表

    前言 人生总是直向前行走,从不留下什么. 原文地址:学习javascript数据结构(二)--链表 博主博客地址:Damonare的个人博客 正文 链表简介 上一篇博客-学习javascript数据结 ...

  2. 初探JavaScript(二)——JS如何动态操控HTML

    除去五一三天,我已经和<JavaScript Dom编程艺术>磨合了六天,第一印象很好.慢慢的,我发现这是一块排骨,除了肉还有骨头.遇到不解的地方就会多看几遍,实在不懂的先跳过,毕竟,初次 ...

  3. 从头开始学JavaScript (十二)——Array类型

    原文:从头开始学JavaScript (十二)--Array类型 一.数组的创建 注:ECMAscript数组的每一项都可以保存任何类型的数据 1.1Array构造函数 var colors = ne ...

  4. 使用JavaScript生成二维码教程-附qrcodejs中文文档

    使用javascript生成二维码 依赖jquery 需要使用到的库 https://github.com/davidshimjs/qrcodejs DIV <div id="qrco ...

  5. 同事问如何判断同花顺,我用javascript的二维数组写了个简易demo

    有个前同事在群里问如何判断是否为同花顺我用javascript的二维数组写了个简易demo. <!DOCTYPE html> <html> <body> <s ...

  6. 2、JavaScript 基础二 (从零学习JavaScript)

     11.强制转换 强制转换主要指使用Number.String和Boolean三个构造函数,手动将各种类型的值,转换成数字.字符串或者布尔值. 1>Number强制转换 参数为原始类型值的转换规 ...

  7. Javascript面向对象二

    Javascript面向对象二 可以通过指定原型属性来对所有的对象指定属性, Object.prototype.name="zhangsan"; Object.prototype. ...

  8. QrCode C#生成二维码 及JavaScript生成二维码

    一 C#的二维码    示例: class Program { static void Main(string[] args) { QrEncoder qrEncoder = new QrEncode ...

  9. 一篇文章图文并茂地带你轻松学完 JavaScript 设计模式(二)

    JavaScript 设计模式(二) 本篇文章是 JavaScript 设计模式的第二篇文章,如果没有看过我上篇文章的读者,可以先看完 上篇文章 后再看这篇文章,当然两篇文章并没有过多的依赖性. 5. ...

  10. 杂乱无章之javascript(二)

    1.浏览器与事件事件通常是由浏览器所产生,不同的浏览器会产生的事件也有所不同,即使同一浏览器不同版本所产生的事件也有不同.以下为HTML4.01中的事件 2.error事件:它可以调用一个错误处理函数 ...

随机推荐

  1. 从一个小需求感受Redis的独特魅力

    分享一个简单的小需求应该怎么设计实现以及有关Redis的使用 Redis在实际应用中使用的非常广泛,本篇文章就从一个简单的需求说起,为你讲述一个需求是如何从头到尾开始做的,又是如何一步步完善的. 需求 ...

  2. Shell编程—正则表达式

    1什么是正则表达式 1.1定义 正则表达式是你所定义的模式模板,Linux工具可以用它来过滤文本.Linux 工具(比如sed编辑器或gawk程序)能够在处理数据时使用正则表达式对数据进行模式匹配. ...

  3. Java多线程_Atomic

    1.什么是Atomic?Atomic,中文意思是“原子的”,在java多线程中,有这样的一个包: java.util.concurrent.atomic——线程安全的原子操作包 这是JDK1.5的版本 ...

  4. jsBridge

    jsBridge https://www.dazhuanlan.com/2019/12/05/5de7eb50739df/ JSBridge的原理 https://juejin.im/post/5ab ...

  5. Codeforces 1321C Remove Adjacent

    题意 给你一个字符串,字符\(s_i\)可以被伤处当且仅当\(s_{i-1}=s_i-1\)或\(s_{i+1}=s_i-1\).问最多能删几个字符. 解题思路 其实,有个很简单的做法就是从\(z\) ...

  6. Ubuntu 20.04 手动安装 sublime_text 并建立搜索栏图标(解决 Ubuntu 20.04 桌面图标无法双击打开问题)

    下载sublime_text_3离线程序包 wget https://download.sublimetext.com/sublime_text_3_build_3211_x64.tar.bz2 #x ...

  7. 软件开发流变史:从瀑布开发到敏捷开发再到DevOps

    作为在20世纪70年代.80年代盛极一时的软件开发模型,瀑布模型通过制定计划.需求分析.软件设计.程序编写.软件测试.运行维护等6个流程将整个软件生命周期衔接起来.这6个流程有着严格的先后次序之分,只 ...

  8. C011:分数相加

    代码: #include "stdafx.h" int _tmain(int argc, _TCHAR* argv[]) { int up1,down1,up2,down2; do ...

  9. [Python]在当前目录下创建三个目录

    import os os.mkdir("2018-03-16-b018") os.mkdir("2019-03-16-b019") os.mkdir(" ...

  10. 10 张图聊聊线程的生命周期和常用 APIs

    上一篇文章我们聊了多线程的基础内容,比如为什么要使用多线程,线程和进程之间的不同,以及创建线程的 4 种方式.本文已收录至我的 Github: https://github.com/xiaoqi666 ...