Javascript操作DOM对象

1、DOM操作
-1.DOM是Document Object Model的缩写,即文档对象模型,是基于文档编程的一套API接口,1938年,W3C发布了第一级的DOM模范,这个范围允许访问和操作HTML页面中的每个单独元素,如网页的表格、图片、文本、表单元素等。
-2.使用JavaScript操作的DOM是分为三个方面:DOM Core(核心)、HTML—DOM和CSS—DOM。
–2、HTML文档在DOM中是这样规定的。
1.整个文档是一个文档节点。
2.每个HTML标签时一个元素节点。
3.包含在HTML元素中的文本是文本节点
4.每个HTML属性是一个属性节点
5.注释属于注释节点。
–3、使用getElement序列方法访问指定节点
-1.在HTML文档中,访问节点的标准方法就是我们之前学习的getElement系列方法,即getElementByld( )、getElementsByName( )和getElementsByTagName( ),只是它们查找的方法略有不同。
-2.查找方法
getElementByld( ):返回按id属性查找的第个对象的引用。
getElementsByName( ):返回按带有指定名称name 查找的对象的集合,由于一个文档中可能会有多个同名节点(如复选框、 单选按钮),因此返回的是元素数组
getElementsByTagName( ):返回带有指定标签名TagName 查找的对象的集合,由于一个文档中可能会有多个同类型的标签节点(如图片组、 文本输入框),因此返回元素数组。
–4、根据层次关系访问节点
-1.通过getElementById()、getElementsByName()和getElementsByTagName()这三种方法可查证看HTML文档的中的任何元素,但是这三种方法都会忽略文档的结构,因此在HTML DOM中提供了节点属性,这些属性可遵守文档的结构,在文档的布局进行"短距离地查找元素"。
-2.节点属性
parentNode:返回节点的父节点
childNodes:返回子节点集合,childNodes[i]
firstChild:返回节点的第一个子节点,最普通的用法是访问该元素的文本节点
lastChild:返回节点的最后一个子节点
nextSibling:下一个节点
previousSibling:上一个节点
–5、element属性
-1.在JavaScript中给大家提供一组可兼容不同浏览器的element属性,可以消除这种因空行,换行等出现的无法确定访问到节点的情况。
-2.element属性
firstElementChild:返回节点的第一个子节点,最普遍的用法是访问该元素的文本节点
lastElementChild:返回节点的最后一个子节点
nextElementSibling:下一个节点
previousElementSibling:上一个节点
–6、节点信息
-1.节点是DOM层次结构中的任何类型的对象的通用名称,每个节点都拥有包含着关于节点信息某些信息的属性,这些属性如下。
nodeName(节点名称)属性包含某个节点的名称,元素节点的nodeName是标签名称,属性节点dnodeName是属性名称,文本节点的nodeName永远是#text,文档节点的noedName永远是#document。
nodeValue(节点值),对于文本节点,nodeValue属性包含文本,对于属性节点,nodeValue属性包含属性值;nodeVlue属性对于文档节点和元素节点是不可用的。
nodeType(节点类型)属性可返回节点的类型,一个只读属性,如返回的元素节点、文本节点、注释节点等。
-2.节点类型
元素element的NodeType值是1
属性attr的NodeType值是2
文本text的NodeType值是2
注释comments的NodeType值是8
文档document的NodeType值是9
–7、操作节点的属性
-1.HTML DOM提供了获取及改变点属性值的标准方法,如下所示。
getAttention(“属性名”):用来获取属性的值。
setAttribute(“属性名”,“属性值”):用来设置属性的值。
–8、创建和插入节点
-1.使用JavaScript操作DOM有很多方法可以创建或增加一个新节点。主要方法如下。
-2.创建节点
createElement(tagName):创建一个标签名为tagName的新元素节点
A.appendChild(B):把B节点追加至A节点的末尾
insertBefore(A,B):把A节点插入B节点之前
cloneNode(deep):复制某个指定的节点
–9、删除和替换节点
使用Core HTML 删除节点的方法如下。
removeChild(node):删除指定的节点
replaceChild(newNode,oldNode):用其他的节点替换指定的节点,newNode是替换的新节点,oldNode是要被替换的节点。
–10、操作节点样式
-1.style属性
在HTML DOM中,style是一个对象,一个代表独立的样式声明,可通过应用样式的文档或元素访问style对象,使用style属性改变样式的语法如下。
语法:
HTML元素.style.样式属性=“值”;
-2.style对象的常用属性
background(背景):
backgroundColor:设置元素的背景颜色
backgroundImage:设置元素的背景图像
backgroundRepeat:设置是否及如何重复背景图像
text(文本):
fontSize:设置元素的字体大小
fontWeight:设置字体的粗细
textAlign:排列文本
textDecoration:设置文本的修饰
font:设置同一行字体的属性
color:设置文本的颜色
padding(边距):
padding:设置元素的填充
paddingTop:设置元素的上填充
paddingBottom:设置元素的下填充
paddingLeft:设置元素的左填充
paddingRight:设置元素的右填充
border(边框):
border:设置四个边框的属性
borderTop:设置上边框的属性
borderBottom:设置下边框的属性
borderLeft:设置左边框的属性
borderRight:设置右边框的属性
-3.常用事件
onclick:当用户单击某个对象时调用事件
onmouseover:鼠标移到某元素之上
onmouseout:鼠标从某元素移开
onmousedown:鼠标按钮被按下
-4.className属性
在HTML DOM中,className属性可设置或返回元素的class样式,语法如下。
语法:
HTML元素.className=“样式名称”
–11、获取元素位置
-1.HTML中元素的属性
offsetLeft:返回当前元素左边界的距离,只读属性
offsetTop:返回当前元素上边界的距离,只读属性
offsetHeight:返回元素的高度
offsetWidth:返回元素的宽度
offsetParent:返回元素的偏移容器,即对最近的动态定位的包含元素的引用
scrollTop:返回匹配元素的滚动条的垂直位置
scrollLeft:返回匹配元素的滚动条的水平位置
clientWidth:返回元素的可见宽度
clientHeight:返回元素的可见高度

### RT-DETRv3 网络结构分析 RT-DETRv3 是一种基于 Transformer 的实时端到端目标检测算法,其核心在于通过引入分层密集正监督方法以及一系列创新性的训练策略,解决了传统 DETR 模型收敛慢和解码器训练不足的问题。以下是 RT-DETRv3 的主要网络结构特点: #### 1. **基于 CNN 的辅助分支** 为了增强编码器的特征表示能力,RT-DETRv3 引入了一个基于卷积神经网络 (CNN) 的辅助分支[^3]。这一分支提供了密集的监督信号,能够与原始解码器协同工作,从而提升整体性能。 ```python class AuxiliaryBranch(nn.Module): def __init__(self, in_channels, out_channels): super(AuxiliaryBranch, self).__init__() self.conv = nn.Conv2d(in_channels, out_channels, kernel_size=3, padding=1) self.bn = nn.BatchNorm2d(out_channels) def forward(self, x): return F.relu(self.bn(self.conv(x))) ``` 此部分的设计灵感来源于传统的 CNN 架构,例如 YOLO 系列中的 CSPNet 和 PAN 结构[^2],这些技术被用来优化特征提取效率并减少计算开销。 --- #### 2. **自注意力扰动学习策略** 为解决解码器训练不足的问题,RT-DETRv3 提出了一种名为 *self-att 扰动* 的新学习策略。这种策略通过对多个查询组中阳性样本的标签分配进行多样化处理,有效增加了阳例的数量,进而提高了模型的学习能力和泛化性能。 具体实现方式是在训练过程中动态调整注意力权重分布,确保更多的高质量查询可以与真实标注 (Ground Truth) 进行匹配。 --- #### 3. **共享权重解编码器分支** 除了上述改进外,RT-DETRv3 还引入了一个共享权重的解编码器分支,专门用于提供密集的正向监督信号。这一设计不仅简化了模型架构,还显著降低了参数量和推理时间,使其更适合实时应用需求。 ```python class SharedDecoderEncoder(nn.Module): def __init__(self, d_model, nhead, num_layers): super(SharedDecoderEncoder, self).__init__() decoder_layer = nn.TransformerDecoderLayer(d_model=d_model, nhead=nhead) self.decoder = nn.TransformerDecoder(decoder_layer, num_layers=num_layers) def forward(self, tgt, memory): return self.decoder(tgt=tgt, memory=memory) ``` 通过这种方式,RT-DETRv3 实现了高效的目标检测流程,在保持高精度的同时大幅缩短了推理延迟。 --- #### 4. **与其他模型的关系** 值得一提的是,RT-DETRv3 并未完全抛弃经典的 CNN 技术,而是将其与 Transformer 结合起来形成混合架构[^4]。例如,它采用了 YOLO 系列中的 RepNCSP 模块替代冗余的多尺度自注意力层,从而减少了不必要的计算负担。 此外,RT-DETRv3 还借鉴了 DETR 的一对一匹配策略,并在此基础上进行了优化,进一步提升了小目标检测的能力。 --- ### 总结 综上所述,RT-DETRv3 的网络结构主要包括以下几个关键组件:基于 CNN 的辅助分支、自注意力扰动学习策略、共享权重解编码器分支以及混合编码器设计。这些技术创新共同推动了实时目标检测领域的发展,使其在复杂场景下的表现更加出色。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值