JavaScript,你好!(二)
操作BOM对象
浏览器介绍
JavaScript和浏览器的关系?
JavaScrpit诞生就是为了能够让它在浏览器中运行!
BOM:浏览器对象模型
- IE 6~11
 - Chrome
 - Safari
 - FireFox
 
第三方
- QQ浏览器
 - 360浏览器
 
window
window代表 浏览器窗口
Navigator
Navigator,封装了浏览器的信息
navigator.appName
"Netscape"
navigator.appVersion
"5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36"
navigator.userAgent
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36"
navigator.platform
"Win32"
大多数时候,我们不会使用navigator对象,因为会被人为修改
不建议使用这些属性来判断和编写代码
screen
screen.width
1920px
screen.height
1080px
location(重要)
location代表当前页面的URL信息
href: "https://www.baidu.com/?tn=02003390_5_hao_pg"
ancestorOrigins: DOMStringList
origin: "https://www.baidu.com"
protocol: "https:"
host: "www.baidu.com"
document
document代表当前的页面,HTML DOM文档树
document.title
"百度一下,你就知道"
document.title='你长得真好看'
"你长得真好看"
获取具体的文档树节点
<dl id='app'>
      <dt>Java</dt>
      <dd>JavaSE</dd>
      <dd>JavaEE</dd>
</dl>
<script>
      var dl = document.getElementById('app');
</script>
获取Cookie
document.cookie
"PSTM=*******...";
history
history代表浏览器的历史记录
history.back();      //后退
history.forward();      //前进
操作DOM对象
核心
浏览器网页就是一个Dom树形结构
- 更新:更新DOM节点
 - 遍历DOM节点:得到DOM节点
 - 删除: 删除一个DOM节点
 - 添加: 添加一个新的节点
 
要操作一个DOM节点,就必须要先获得这个DOM节点
获得DOM节点
//对应css选择器
var h1 = document.getElementsByTagName('h1');
var p1 = document.getElementById('p1');
var p2 = document.getElementByClassName('p2');
var father = document.getElementById('father');
var childrens = father.children;      //获取父节点下的所有子节点
//father.firstChild
//father.lastChild
更新节点
<div id="id1">
</div>
<script>
var id1= document.getElementById("id1");
</script>
操作文本
id1.innerText='456';//修改文本的值
id1.innerHTML='<strong>123<strong>'//可以解析HTML文本标签
操作css
id1.style.color = 'yellow'; //属性使用 字符串 包裹
id1.style.fontsize = '20px'; //注意驼峰命名问题
id1.style.padding = '2em';
删除节点
删除节点步骤:先获取父节点,在通过父节点删除自己
<div id="father">
      <h1>标题一</h1>
      <p id="p1">p1</p>
      <p class="p2">p2</p>
</div>
<script>
      var self = document.getElementById('p1');
      var father = p1.parentElement;
      father.removeChild(self)
      //删除是一个动态的过程
      father.removeChild(father.children[0])
      father.removeChild(father.children[1])
      father.removeChild(father.children[2])
</script>
注意:删除多个节点的时候,children是在时刻变化的,删除节点的时候一定要注意。
插入节点
我们获得了某个节点,假设这个dom节点是空的,我们通过innerHTML就可以增加一个元素了,但是这个DOM节点已经存在元素了,我们这样干会产生覆盖
追加:
<script>
var js = doument.getElementById('js');
var list = doument.getElementById('list');
list.appendChild(js);      //追加到后面
</script>
创建一个新的标签,实现插入
<script>
var js = doument.getElementById('js');      //已经存在的节点
var list = doument.getElementById('list');
//通过js创建一个新的节点
var newP = document,createElement('p'); //创建一个p标签
newP.id = 'newP';
newP.innerText = "hello,world!";
//创建一个标签节点
var myScript = document.createElement('script');
myScript.setAttribute('type','text/javascript');
//可以创建一个Style标签
var myStyle = document.createElement('style');//创建了一个空style标签
myStyle.setAttribute('type','text/css');
myStyle.innerHTML = 'body{back-ground-color:chartreuse;}';//设置标签内容
document.getElementsByTagName('head')[0].appedChild(myStyle);
</script>
insertBefore
var ee= document.getElementById('ee');
var js= document.getElementById('js');
var list= document.getElementById('list');
//要包含的子节点.insertBefore(newNode,targetNode)
list.insertBefore(js.ee);
操作表单
表单是什么 form DOM 树
- 文本框 text
 - 下拉框 select
 - 单选框 radio
 - 多选框 checkbox
 - 隐藏域 hidden
 - 密码框 password
 - ....
 
表单的目的是用来提交数据
获得要提交的信息
<form action="post">
<p>
      用户名:<input type="text" id="username">
</p>
<!--多选框的值,就是定义好的value-->
<p>
性别:<input type="radio" name="sex" value="man" id="boy"> 男
      <input type="radio" name="sex" value="women" id="girl"> 女
</p>
</form>
<script>
      var input_text = document.getElementById('username');
      var boy_radio = document.getElementById('boy');
      var girl_radio = document.getElementById('girl');
      //得到输入框的值
      input_text.value
      //修改输入框的值
      input_text.value="123"
      //对于单选框,多选框等等固定的值,boy_radio.value只能取得当前的值
      boy_radio.checked;      //查看返回的结果,是否为true,如果为true,则被选中
      boy_radio.checked = true;      //赋值
</script>
提交表单。md5加密密码,表单优化
<form action='https://www.bilibili.com' method='post' onsubmit='return run()'>
      <p>
      用户名:<input type='text' id='username' name='username'>
      </p>
      <p>
      密码:<input type='password' id='input-password'>
      </p>
      <input type='hidden' id='md5-password' name='password'>
      <!--绑定事件 onclick 被点击-->
      <button type='submit'>提交</button>
</form>
<script>
      function run(){
    alert("冲");
      var username = document.getElementById('username');
      var pwd = document.getElementById('input-password');
      var md5pwd = document.getElementById('md5-password');
       md5pwd.value = md5(pwd.value);
        //可以效验判断表单内容,true就是通过提交,false阻止提交
      return true;
}
</script>
												
											JavaScript,你好!(二)的更多相关文章
- 学习javascript数据结构(二)——链表
		
前言 人生总是直向前行走,从不留下什么. 原文地址:学习javascript数据结构(二)--链表 博主博客地址:Damonare的个人博客 正文 链表简介 上一篇博客-学习javascript数据结 ...
 - 初探JavaScript(二)——JS如何动态操控HTML
		
除去五一三天,我已经和<JavaScript Dom编程艺术>磨合了六天,第一印象很好.慢慢的,我发现这是一块排骨,除了肉还有骨头.遇到不解的地方就会多看几遍,实在不懂的先跳过,毕竟,初次 ...
 - 从头开始学JavaScript (十二)——Array类型
		
原文:从头开始学JavaScript (十二)--Array类型 一.数组的创建 注:ECMAscript数组的每一项都可以保存任何类型的数据 1.1Array构造函数 var colors = ne ...
 - 使用JavaScript生成二维码教程-附qrcodejs中文文档
		
使用javascript生成二维码 依赖jquery 需要使用到的库 https://github.com/davidshimjs/qrcodejs DIV <div id="qrco ...
 - 同事问如何判断同花顺,我用javascript的二维数组写了个简易demo
		
有个前同事在群里问如何判断是否为同花顺我用javascript的二维数组写了个简易demo. <!DOCTYPE html> <html> <body> <s ...
 - 2、JavaScript 基础二 (从零学习JavaScript)
		
11.强制转换 强制转换主要指使用Number.String和Boolean三个构造函数,手动将各种类型的值,转换成数字.字符串或者布尔值. 1>Number强制转换 参数为原始类型值的转换规 ...
 - Javascript面向对象二
		
Javascript面向对象二 可以通过指定原型属性来对所有的对象指定属性, Object.prototype.name="zhangsan"; Object.prototype. ...
 - QrCode C#生成二维码 及JavaScript生成二维码
		
一 C#的二维码 示例: class Program { static void Main(string[] args) { QrEncoder qrEncoder = new QrEncode ...
 - 一篇文章图文并茂地带你轻松学完 JavaScript 设计模式(二)
		
JavaScript 设计模式(二) 本篇文章是 JavaScript 设计模式的第二篇文章,如果没有看过我上篇文章的读者,可以先看完 上篇文章 后再看这篇文章,当然两篇文章并没有过多的依赖性. 5. ...
 - 杂乱无章之javascript(二)
		
1.浏览器与事件事件通常是由浏览器所产生,不同的浏览器会产生的事件也有所不同,即使同一浏览器不同版本所产生的事件也有不同.以下为HTML4.01中的事件 2.error事件:它可以调用一个错误处理函数 ...
 
随机推荐
- Nginx反向代理的使用
			
一.Nginx的基本命令 nginx:启动 nginx nginx -t :测试配置文件是否有语法错误 nginx -s reopen:重启Nginx nginx -s reload:重新加载Ngin ...
 - [FJOI2020]世纪大逃亡 题解
			
FJOI2020 D1T1 题目大意 给出一个由 $n$ 行 $m$ 列的点构成的网格,其中第 $1$ 行,第 $n$ 行,第 $1$ 列与第 $m$ 列为边界,给出 $s$ 个点,求这 $s$ 个点 ...
 - 力扣leetcode 435. 无重叠区间 - 贪心
			
非常经典的区间贪心思想 -- 详见博文: 贪心思想之区间贪心 本题给定一个区间的集合,找到需要移除区间的最小数量,使剩余区间互不重叠. 注意: 可以认为区间的终点总是大于它的起点. 区间 [1,2] ...
 - 使用OpenCV和Python构建自己的车辆检测模型
			
概述 你对智慧城市的想法感到兴奋吗?如果是的话,你会喜欢这个关于建立你自己的车辆检测系统的教程的 在深入实现部分之前,我们将首先了解如何检测视频中的移动目标 我们将使用OpenCV和Python构建自 ...
 - Chrome开发者工具调试详解
			
chrome开发者工具最常用的四个功能模块:元素(ELements).控制台(Console).源代码(Sources),网络(Network). 元素(Elements):用于查看或修改HTML元素 ...
 - Shader 语义
			
在书写HLSL shader程序时,输入和输出变量需要拥有他们 含义来表明语义.这在HLSL shader中是一个标准的做法. Vertex shader 输入语义 主顶点着色器函数(被指令 #pra ...
 - 设计模式(多个if的处理)
			
使用场景 如果在代码中出现大量if判断,再执行一些比较复杂的业务操作,类似于以下情况. @Test void test() { String str = "A"; if (str. ...
 - Nginx之rewrite使用
			
rewrite regex replacement [flag]; flag=[break/last/redirect/permanent] ² regex 是正则表达式 ² replacement ...
 - 8成以上的java线程状态图都画错了,看看这个-图解java并发第二篇
			
本文作为图解java并发编程的第二篇,前一篇访问地址如下所示: 图解进程线程.互斥锁与信号量-看完还不懂你来打我 图形说明 在开始想写这篇文章之前,我去网上搜索了很多关于线程状态转换的图,我惊讶的发现 ...
 - python3 venv
			
介绍 venv 是什么? python3 自带的虚拟环境 为什么需要虚拟环境? 当服务器中需要搭建共存多个环境时(不同环境之间会有冲突) 比如说环境1:需要mongo:3.6版本 / 但是环境2:需要 ...