getAttribute,appendChild,removeChild,replaceChild,insertBefore 自定义函数

HPM6E00EVK 上基于 SSC Tool 5.13 的 8 轴 EtherCAT 从站配置与 XML 生成实战 EtherCAT 从站开发中,SSC Tool 用于生成协议栈代码与 ESI 设备描述文件,是主站识别从站的关键。其原理是将对象字典、PDO 映射等配置翻译为 XML 和 C 代码,确保通信一致性。技术价值在于提升多轴伺服系统的集成效率与实时性。典型应用于工业运动控制、机械臂等场景。本文围绕先楫 HPM6E00EVK 评估板,详细拆解 SSC Tool 5.13 的配置流程、8 轴 CiA402 对象字典组织、XML 关键节点解析及联调避坑经验,助力嵌入式工程师快速实现多轴从站开发。 阅读详情

标题中的三个函数的优化:

 1.getAttribute 因getAttribute在IE与Firefox上有会区别,比如class,for上面,获取到的值不一样

2.appendChild只能每次添加一个,不能添加多个

3.removeChild只能每次移除一个,不能移除多个

4.replaceChild,insertAfter(与insertBefore对应)

为了兼容,因此创建此函数:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 
<title>test</title> 
<script language="javascript"> 
window.onload = function() {
	var op = document.getElementById('op');
	var header= document.getElementById('header');
	var div1 = document.createElement("div");
	div1.innerHTML="DIV1";
	var div2 = document.createElement("div");
	div2.innerHTML="DIV2";
	var div3 = document.createElement("div");
	div3.innerHTML="DIV3";

	//如下为获取节点op的class属性,IE/Firefox均可得到 base,调用函数getAttr()
	alert(getAttr(op,"class"));
         //如下为将div1,div2,div3三个DIV添加到document.body中,调用函数append()
	append(document.body,div1,div2,div3);
         //如下为将div1,div2,div3三个DIV移除从document.body中,调用函数delNode()
	delNode(div1,div2,div3);
	//如下,将节点op换成新的div1,op为原节点,div1为新节点,调用函数replaceNode()
	replaceNode(op,div1);
         //如下,将div1节点插入到header节点之后,调用函数insertAfter()
	insertAfter(header,div1);
};

function insertAfter(node,newNode) {
	//将newNode插入到node之后
	//如果node有下一个节点,newNode插入到node.nextSibling的前面
	//如果node没有下一个节点,newNode插入到node.parentNode.appendChild的后面
	var pn = node.parentNode;
	if (node.nextSibling) {
		pn.insertBefore(newNode,node.nextSibling);
	} else {
		pn.appendChild(newNode);
	}
	return newNode;
}


function replaceNode(replaced,newNode) {
	replaced.parentNode.replaceChild(newNode,replaced);
}

function each(arr,fn) {
	for (var i=0;i<arr.length;i++) {
		fn(arr[i],i);
}}

function delNode() {
	/*for (var i=0;i<arguments.length;i++) {
		arguments[i].parentNode.removeChild(arguments[i]);
	}*/
	each(arguments,function(node){
		node.parentNode.removeChild(node);
	});
}

function append(node) {
	for (var i=1;i<arguments.length;i++) {
		node.appendChild(arguments[i]);
	}
	return node;
}

var specialNames={
	"class":"className",
	"for":"htmlFor"
};
function getAttr(node,attrName) {
	var attr = node.getAttribute(attrName);
	if (attr == null) {
		if (attrName in specialNames) {
			attrName = specialNames[attrName];
			attr = node.getAttribute(attrName);
		}
	}
	return attr
}


</script> 
</head> 
<body>
	<h1 id="header">TEST</h1>
	<p id="op" class="base">第一段</p>	
</body> 
</html>


从工具选型到落地实践:吃透 SAP Fiori Launchpad 配置工具体系 摘要: SAP Fiori Launchpad配置远非简单添加应用和分配角色,涉及技术目录、业务目录、Spaces/Pages等多层管理。官方推荐新工具分工:技术目录用FLPAM维护应用定义,业务目录用FLPCM编排应用组合,Spaces/Pages优化用户体验布局,而传统Groups模式已被标记弃用。这种分层治理模式(定义层-编排层-展示层)能有效解决传输混乱、升级兼容性问题,尤其适合大规模项目实施。关键在于区分技术配置与业务呈现,避免将所有功能堆砌在单一旧工具中。(149字) 阅读详情

相关推荐

绕过卡巴斯基通过RPC控制lsass注入DLL

参考国外的XPN以及3gstudent大佬的文章: https://blog.youkuaiyun.com/xiangshen1990/article/details/104872566 https://gist.github.com/xpn/93f2b75bf086baf2c388b2ddd50fb5d0 原理:正常的ssp扩展(dll)可以加载到lsass进程中去,比如kerberos验证都是通...

2ed 3524

appendChild不生效?

得到的是数组对象 <script> var elem_li = document.createElement('li'); // 生成一个 li元素 elem_li.innerHTML = '这是增加的一行'; // 设置元素的内容 document.getElementsByClassName('wp_nav')[1].appendChild(elem_li); // 添加到UL中去 </script> ...

qq_42434039的博客 893

Circos图审美拯救计划:用TBtools复刻Nature级共线性分析图谱

本文针对Circos图在共线性分析中的审美提升问题,提供了一套基于TBtools的完整优化方案。通过构建和谐的色彩体系、精细控制信息层布局以及模仿顶刊构图逻辑,详细讲解了如何从配色、透明度、标签显示到高级参数设置,将默认图表升级为具有高级学术美感的Nature级图谱,助力研究者提升论文图表质量。

cherry的博客 911

JS中appendChild()与insertBefore()方法的使用

appendChild()方法:向节点的子节点列表的末尾添加新的子节点。语法:appendChild(newChild); insertBefore()方法:在已有的子节点前插入一个新的子节点。语法:insertBefore(newChild,refChild); 相同之处:都是插入子节点 不同之处:appendChild()方法是在父级节点中的子节点的末尾添加新的节点(相对于父级节点来说)

soos的博客 993

【软件使用】Calibre部分提参的实战技巧与常见问题解析

本文深入解析Calibre部分提参(Partial Extraction)的实战技巧与常见问题,涵盖PEX、hcell和xcell文件的高级应用。通过实际案例展示如何提升电路仿真效率,解决时钟信号失真等复杂问题,并提供版图设计中的防坑指南,助力芯片设计工程师优化工作流程。

weixin_28717431的博客 161

Unity接入Google登录:Credential Manager完整集成指南与避坑实践

在移动应用开发中,第三方登录是提升用户体验和降低注册门槛的关键技术。其核心原理是通过OAuth 2.0等授权协议,安全地获取用户在平台的身份凭证。对于面向海外市场的Unity应用,Google登录因其庞大的用户基数成为首选方案。然而,随着Android系统更新和隐私政策收紧,传统的WebView登录方式面临兼容性挑战。Credential Manager作为Google推出的现代化凭据管理API,通过系统级集成解决了这一问题,它统一了密码、通行密钥和第三方登录的调用接口,显著提升了登录成功率和原生体验。在U

weixin_28025327的博客 318

Web前端之操作元素内容的方法、介绍、区别、createTextNode、createElement、appendChild、textConten、innerText、innerHTML、append

Web前端之操作元素内容的方法、介绍、区别、createTextNode、createElement、appendChild、textConten、innerText、innerHTML、append

优快云博客主页地址:https://mengjian.blog.youkuaiyun.com/ 8067

【PLIO学习总结】laserMapping中的时间戳与状态更新逻辑

本文仅用于个人学习总结记录。如有错误,请批评指正。

larrydong的博客 1646

原生js清空子元素与添加子元素

清空子元素(removeChild) //获取父元素 let content = document.getElementsByClassName("table-page__text")[0]; //循环删除子元素,一直删除第一个子元素直到没有子元素即为清空 while (content.hasChildNodes()) { content.removeChild(content.firstChild); } 添加子元素(insertAdjacentHTML) let content = docume

写写写写到厌倦~ 2029

骑砍2霸主MOD开发(9)-游戏大地图(MapScene)

Settlement类型由town,castle,castle_village,village,hideout五种类型组成,通过对GameEntity中添加tag实现类型的加载.大地图中军团(MobileParty)的移动速度,AI寻路,食物消耗等均和当前MobileParty所处地形有关,地形统一被定义为TerrainType,类型有森林,荒漠等.MapScene.Read("Main_map", ref sceneInitializationData, "") 装载Main_map大地图。

骑砍战团&霸主MOD开发 1621

《网络安全自学教程》- 802.1x协议

802.1x协议架构,工作原理/认证流程,认证方式,MAB认证,触发认证的三种方式,EAP报文格式,EAPOL报文格式

wangyuxiang946的博客 2万+

.html(arguments[0])其中的arguments[0] 什么意思

你这个语句是在一个方法体里边的 arguments是方法调用实际参数的集合对象(注意,arguments有length属性,但是他并不是一个Array) 你应该使用的jquery吧 这里的arguments[0]表示你这个调用方法的第一个参数 eg function method(a){ $("body").html(arguments[0]); /* 这里其实也可以写成 .html

不抛弃不放弃 2961

BLDC&PMSM电机控制器硬件设计工程(八)72V 10kW电机控制器原理图工程及库文件

电机控制器基本需求:接口类型;MCU平台;通信接口;供电;信号采集;信号输出;功率;EMC或者认证需求。

小幽余生不加糖 371

insert Before();以及replaceChild();详解

insertBefore();方法insertBefore方法使用的格式是这样的insertBefore(obj1,obj2);其含义可以理解为在元素obj2的前面添加元素obj1。replaceChild();方法他的格式为replaceChild(obj1,obj2);他的作用是把obj2 元素更换为obj1.<input type="button" value="点击添加span放到div的最

PengHao__的博客 1328

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

JS中的DOM操作属性、DOM创建、DOM增加、DOM修改、DOM删除以及DOM获取非行间样式

当网页被加载时,浏览器会创建页面的文档对象模型DOM(Document Object Model),在DOM中,每个东西都是节点。 DOM四大操作:查找、更新、添加、删除 通过DOM,JavaScript 可创建动态的 HTML: 能够改变页面中的所有 HTML 元素 能够改变页面中的所有 HTML 属性 能够改变页面中的所有 CSS 样式 能够对页面中的所有事件做出反应 前提:首先找到相关元素,前面一篇博客,详细的说明了,如何查找相关的元...

王春燕的博客 6032

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

js节点

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> .main{width: 400px;height: 400px;...

137

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

js节点操作

1.1 父节点对象.firstChild 查找父元素下的第一个节点 可能会有文本节点 换行。父元素节点.children[父元素节点.children.length-1] 返回最后一个子节点。2.1父节点对象.firstElementChild 查找父元素下的第一个子元素节点。2.2父节点对象.lastElementChild 查找元素的最后一个子元素节点。1. 通过父节点对象查找子节点对象(可能会有文本节点) 兼容性好。

dd的博客 749

JS-DOM

element属性 fristElementChild:返回节点的第一个子节点,最普遍得的用法是访问该元素的文本节点 示例:alert(body.firstElementChild.innerHTML); lastElementChild:返回节点的最后的一个子节点 示例:alert(body.lastElementChild.innerHTML); nextElementSibling:下一个节点 示例:alert(girl.nextElementSibling.innerHTML); previou

weixin_46686096的博客 134

dom基本操作

document --->HTMLDocument.prototype --->Document.prototype //封装Children方法 Element.prototype.Mychildren = function(){ var child = this.childNodes; var len = child.length; var arr =...

weixin_42160842的博客 98

2021-06-06

一:DOM对象控制HTML元素节点属性 9-5 getAttribute()方法通过元素节点的属性名称获取属性的值。 语法:elementNode.getAttribute(name) 说明: 1. elementNode:使用getElementById()、getElementsByTagName()等方法,获取到的元素节点。 2. name:要想查询的元素节点的属性名字 setAttribute()方法 setAttribute() 方法增加一个指定...

weixin_55491533的博客 205

html控制那些网页元素,DOM对象,控制HTML元素

getElementsByName()返回带有指定名称节点对象的集合语法 document.getElementsByName(name);getElementsByTagName()方法返回带有指定标签名的节点对象的集合,返回的元素顺序是他们在文档中的顺序语法 document.getElementsByTagName(Tagname)getElementById,getElem...

weixin_32808905的博客 312

javaScript DOM编程常用的方法与属性

" DOM是Document Object Model文档对象模型的缩写。根据W3C DOM规范,DOM是一种与浏览器,平台,语言无关的接口,使得你可以访问页面其他的标准组件。 Node接口的特性和方法 特性/方法 类型/放回类型 说明 nodeName String 节点的名字;根据节点的类型而定义 nodeValue St

e4o3k6k9的专栏 206

Dom对象,控制html元素

document.getElementsByName(name)//返回带有指定名称的节点对象的集合。 document.getElementsByTagName(Tagname)//返回带有指定标签名的节点对象的集合。返回元素的顺序是它们在文档中的顺序。 node.firstChild//返回‘childNodes’数组的第一个子节点。如果选定的节点没有子节点,...

100

js 学习第10章 DOM

DOM 1.每个节点都有一个nodeType属性,一共有12个 Node.nodeType === 3(或者Node.TEXT_NODE) // true 就说名这个节点类容是文本 2.nodeName 和 nodeValue 属性 someNode.nodeName // 元素的标签名 节点的关系: 1.childNodes someNode.childNodes[0]; // someNode.chlidNodes.item(1); 2.parentNode // 父节点 someNode.nex

南南东的博客 383

在js中操作DOM的常用方法

在js中操作DOM的常用方法

羽墨灵丘的博客 692

DOM常用基础知识点汇总(入门者适用)

铛~今天又没啥事,来总结一下DOM的基础知识。(公司没活干我也很无奈

weixin_30294709的博客 208
上一篇: JS过滤空白文件节点
下一篇: 表单笔记
___________超
博客等级 码龄15年 0粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值