Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >2.2.3 文档对象模型DOM及表单

2.2.3 文档对象模型DOM及表单

作者头像
周星星9527
发布于 2018-08-05 10:54:24
发布于 2018-08-05 10:54:24
1.6K0
举报

文档对象模型DOM用途是什么?先从一棵树说起。下面是一棵树,由,根部、枝干、叶构成,通过根部可以访问到任何一个叶节点。

通过树根可以找到任何一片树叶
通过树根可以找到任何一片树叶

    而对于一个html文档,可以比作一棵树,如下图。通过根部可以访问每一个标签,并修改其属性。这个根部就是document对象,通过各类方法(如getElementByID)去寻找各个标签。

DOM模型示意(源于网络,侵权删除)
DOM模型示意(源于网络,侵权删除)

(该图片源于网络)

文档对象模型(Document Object Model,简称DOM),实现了通过JavaScript针对网页元素(标签)实现添加、删除、修改等操作,DOM提供了大量函数来操作HTML文档,比如函数getElementByID。标签的id是HTML元素的唯一标识符(就像人的身份证号码一样,标签的id是html里的唯一标识),js中可以通过document的函数getElementByID来获取该元素,从而可以操作该标签元素。如例获取可用于绘图的canvas元素的绘图环境上下文:

1. functionGetCanvasContext(canvasID){

2. var theCanvas = document.getElementById(canvasID);//获取id为canvasID的标签元素

3. return theCanvas.getContext("2d");//调用该元素函数,并返回调用结果

4. }

再比如通过js修改网页标题:

1. document.title="thisTitle";


下面简要介绍表单:

    HTML标签中有一类特殊的标签:表单(form),用于显式控件,以使网页能够交互,如下代码定义了表单,内部包含了两个数字输入框,和一个按钮:

1. <div style="width:500px; height:auto; float:left;display:inline">

2. <form id="formA" width="500" height="400">

3. 设置计算参数: <br />

4. 时间步长: <input type="number" id="timeStep" min="1" max="100" step=0.01 value="1"/><br/>

5. 计算时间: <input type="number" id="during" min="1" max="1000" step=0.01 value="120"/><br/>

6. 提交:<input type="button" value="求解" onclick="main()"/>

7. </form>

8. </div>

运行显式结果如下:

简单表单示意
简单表单示意

如何在网页脚本中获取用户输入的参数呢?form中的button定义了onclick属性,表明点击后会调用main()函数,main函数获取用户输入,如下:

1. //根据id获取文本输入框的内容并转换为整形

2. functionGetInputNumber(id){

3. var numberInput = document.getElementById(id);//获取控件

4. var v=numberInput.value;//获取可见属性

5. return parseInt(v);//转换为整形

6. }

7. //程序入口

8. function main (){

9. var timeStep=GetInputNumber("timeStep")/1000;//获取时间步长

10. var during=GetInputNumber("during");//获取求解时间

11.    console.log(timeStep,during);

12. }

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
JVM | 基于类加载的一次完全实践
我在上篇文章:JVM | 类加载是怎么工作的 中为你介绍了Java的类加载器及其工作原理。我们简单回顾下:我用一个易于理解的类比带你逐步理解了类加载的流程和主要角色:引导类加载器,扩展类加载器和应用类加载器。并带你深入了解了这些“建筑工人”如何从底层工作,搬运原材料(类)并将其完整地构建在Java虚拟机(JVM)的“建筑工地”上。然后,我们跟随一个具体的Building类,亲眼目睹了其在JVM中的生命周期。我在文章末尾留了几个问题,你还记得吗?
kfaino
2023/09/30
6800
JVM | 基于类加载的一次完全实践
深入理解Java类加载器(ClassLoader)
本篇博文主要是探讨类加载器,同时在本篇中列举的源码都基于Java8版本,不同的版本可能有些许差异。主要内容如下
用户1257215
2018/10/26
1.7K0
JAVA虚拟机系列三-类加载过程、双亲委派模型、对象实例化过程
类加载过程就是将.class文件转化为Class对象,类实例化的过程,(User user = new User(); 这个过程是对象实例化的过程);
架构之家
2022/07/12
3380
JAVA虚拟机系列三-类加载过程、双亲委派模型、对象实例化过程
类加载器ClassLoader
上篇文章说到,Class类可以通过一个类的全限定名去加载类,那么底层是如何去加载的呢?这就是我们今天要聊的类加载器ClassLoader,其可以通过一个类的全限定名来获取描述此类的二进制字节流,也即是将编译过后的Class文件加载到内存中。
Liusy
2020/09/01
7720
类加载器ClassLoader
ClassLoader解惑
一个Java程序要想运行起来,首先需要经过编译生成 .class文件,然后创建一个运行环境(jvm)来加载字节码文件到内存运行,而.class 文件是怎样被加载中jvm 中的就是Java Classloader所做的事情。
加多
2018/09/06
1.4K0
ClassLoader解惑
jvm之java类加载机制和类加载器(ClassLoader)的详解
识别方式:ClassLoader instance id + PackageName + ClassName 验证方式:使用类加载器,对同一个class类的不同版本,进行多次加载,检查是否加载到最新的代码。
IT架构圈
2021/02/01
1.6K0
jvm之java类加载机制和类加载器(ClassLoader)的详解
JVM篇2:[-加载器ClassLoader-]
深入理解Java类加载器(ClassLoader) Java --ClassLoader创建、加载class、卸载class 关于Class实例在堆中还是方法区中?
张风捷特烈
2024/02/11
1430
JVM篇2:[-加载器ClassLoader-]
Java ClassLoader 透析
ClassLoader 是 Java 届最为神秘的技术之一,无数人被它伤透了脑筋,摸不清门道究竟在哪里。网上的文章也是一篇又一篇,经过本人的亲自鉴定,绝大部分内容都是在误导别人。本文我带读者彻底吃透 ClassLoader,以后其它的相关文章你们可以不必再细看了
码脑
2019/04/11
5290
Java ClassLoader 透析
类加载器之URLClassLoader
通过源码我们可以发现AppClassLoader和ExtClassLoader都是Launcher的静态内部类,继承自URLClassLoader。
每天学Java
2020/08/05
5.9K0
Java虚拟机--类加载器源码
类加载器源码分析 下面,我们就来深入的学习下类加载器的源码,看看到底做了哪些事情? 类加载体系 上图呈现是源码级别的类加载体系,ClassLoader是基类,所有的类加载器都需要继承它(启动类加载器除
贾博岩
2018/06/20
8310
ClassLoader解析(一):Java中的ClassLoader
Step1::自定义类加载器首先从缓存中查找Class是否已经加载,如果已将加载就返回该Class;如果没加载,则委托给父加载器也就是App ClassLoader。
用户1205080
2019/01/23
6080
2.双亲委派机制详细解析及原理
研究类加载的过程就是要知道类加载的时候使用了双亲委派机制。但仅仅知道双亲委派机制不是目的,目的是要了解为什么要使用双亲委派机制,他的原理是什么?知道双亲委派机制的逻辑思想,然后这个思想是否可以被我们借鉴,为我所用。这才是学习知识的目的。
用户7798898
2021/10/09
7140
踩坑集锦之你真的明白Java类路径的含义吗?
在Dubbo源码篇02—从泛化调用探究Wrapper机制的原理一文中,我们写过compileJava2Class这个方法,来编译,加载,实例化我们的代理对象的java文件:
大忽悠爱学习
2023/05/23
1.4K0
踩坑集锦之你真的明白Java类路径的含义吗?
JVM-白话聊一聊JVM类加载和双亲委派机制源码解析
其中最核心的方法 loadClass ,其实现我们常说的双亲委派机制 ,我们后面展开。
小小工匠
2021/08/17
2800
Java中常见的类加载器及双亲委派机制的原理
我们在代码里得到类的一个class对象,然后通过它的getClassLoader方法得到一个ClassLoader对象,那么运行一下看看这个ClassLoader对象的名字是什么
全栈程序员站长
2022/07/25
2330
Java中常见的类加载器及双亲委派机制的原理
Java 类机制(2)---- 类加载过程
大家好,在该专栏的上一篇文章中我们介绍了一下关于 Java 中类的相关知识点。那么这篇文章我们来看一下一个 Java 类是怎么被虚拟机加载并使用的,本文内容参考了《深入理解Java机》一书。
指点
2019/06/14
6600
Java 类机制(2)---- 类加载过程
从源码角度学习JVM类加载器及自定义类加载器
负责加载支撑JVM运行的位于JRE的lib目录下的核心类库,这个加载器是由C++写的,所以我们在java源码里面是找不到它的实现,如果尝试对它进行打印,输出将为空值。
AI码师
2022/12/22
4090
从源码角度学习JVM类加载器及自定义类加载器
一看你就懂,超详细java中的ClassLoader详解
ClassLoader翻译过来就是类加载器,普通的java开发者其实用到的不多,但对于某些框架开发者来说却非常常见。理解ClassLoader的加载机制,也有利于我们编写出更高效的代码。ClassLoader的具体作用就是将class文件加载到jvm虚拟机中去,程序就可以正确运行了。但是,jvm启动的时候,并不会一次性加载所有的class文件,而是根据需要去动态加载。想想也是的,一次性加载那么多jar包那么多class,那内存不崩溃。本文的目的也是学习ClassLoader这种加载机制。
Frank909
2019/01/14
5.5K1
深入浅出 ClassLoader
“加载”是类加载的时机的第一阶段。 类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括(5个阶段): ① 加载(Loading) ② 连接(Linking)      [1] 验证(Verification)      [2] 准备(Preparation)      [3] 解析(Resolution) ③ 初始化(Initialization) ④ 使用(Using) ⑤ 卸载(Unloading)
tomas家的小拨浪鼓
2019/08/06
8190
深入浅出 ClassLoader
深入分析Java ClassLoader原理
大家都知道,当我们写好一个Java程序之后,不是管是CS还是BS应用,都是由若干个.class文件组织而成的一个完整的Java应用程序,当程序在运行时,即会调用该程序的一个入口函数来调用系统的相关功能,而这些功能都被封装在不同的class文件当中,所以经常要从这个class文件中要调用另外一个class文件中的方法,如果另外一个文件不存在的,则会引发系统异常。而程序在启动的时候,并不会一次性加载程序所要用的所有class文件,而是根据程序的需要,通过Java的类加载机制(ClassLoader)来动态加载某个class文件到内存当中的,从而只有class文件被载入到了内存之后,才能被其它class所引用。所以ClassLoader就是用来动态加载class文件到内存当中用的。
哲洛不闹
2018/09/19
7430
深入分析Java ClassLoader原理
相关推荐
JVM | 基于类加载的一次完全实践
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档