位置: 编程技术 - 正文

JavaScript DOM学习第四章 getElementByTagNames(js dom方法)

编辑:rootadmin
getElementByTagNames(注意是复数的names)会获得一些tag的元素,然后按照他们的顺序保存在一个数组中。这非常的有用,比如在上一章的TOCScript中,就需要获得整个文章里面的所有的H3和H4。 我非常希望在node原型中加入这个功能,但是在IE和Safari里面不行。所以只能把他当做一个普通函数。 使用 getElementByTagNames有两个参数: 1、一个用逗号分隔的tag名称字符串。 2、一个可选的开始元素。如果存在则在该元素的子元素中查找这些tag,如果不存在则在整个文档中查找。 这个函数根据要求的tag名称返回一个数组(而不是节点列表),按照他们在源代码中的出现顺序排列。对于这个排序需要浏览器支持sourceIndex或者compareDocumentPosition。如果都不支持(Safari)那么就按照调用getElementByTagNames()函数时候的tag名称的顺序。 实例1 现在headerList就是文档里包含H1-H4的数组,按照他们出现的顺序排序。 实例2 现在formFieldList就是包含在ID为test的元素下的所有子元素中的input,select,TEXTAREA的数组,并且按照他们出现的书序排列。 解释 首先定义开始元素obj,如果没有给出,那么默认就是document。 将这些tag名称以逗号分割。用一个数组来保存结果。 现在我们遍历所有的tag名称,就用最简单的getElementByTagName()方法,然后把结果传入resultArray。这里的一个要点是,因为getElementByTagName返回的是节点列表,所以我就不能使用array.concat()来建立新的数组。把元素一个一个的压入是我能找到的最好的办法。 我们得到了一个所需的tag名称的元素的指针数组存储在resultArray中,但是这些元素还是按照我们所给的tag的顺序排列的。我们需要再排个序。 现在我们开始排序。我们需要知道浏览器是否支持sourceIndex或者compareDocumentPosition,然后我们对于我们的得到的原始数据做一些检测 如果这里没有第一个节点(也就是说结果里并没有我们需要的元素),就返回一个空数组。 背景:array.sort() array.sort()方法有一个可选函数的参数。这个函数用来比较两个元素(通常称为a和b)。如果第一个应该在前那么这个函数就返回一个负数,如果第二个应该在前那么就返回一个正值。 sourceIndex 如果浏览器支持sourceIndex,我们就根据元素的sourceIndex来排序。sourceIndex是微软的一个非常有用的扩展,可以用来知道元素在源代码中的索引值。页面种的第一个元素(<HTML>)的索引值就是0,第二个(<head>)就是1,等等。sourceIndex也是getElementByTagName(*)中的元素的索引值。 我们用第一个元素的sourceIndex值减去第二个元素的sourceIndex,如果是负值,那么第一个元素就排在前面,如果是正值,那么第二个元素排在前面。这就是sort()需要的。现在resultArray中的元素就是根据他们在文档中的位置来排序的。 compareDocumentPosition 如果浏览器支持compareDocumentPosition,那么就用这个办法来排序。compareDocumentPosition是level3的核心方法,他可以比较两个节点在文档中的位置,然后返回一个值: 1 没有找到 2 在前 4 在后 8 包含 被包含 比如,如果一个标签被包含并且在另一个标签的后面,那么就返回+4=。 我们只对compareDocumentPosition的值中的2、4感兴趣:在前或者在后。所以我们将结果和6进行与运算,这样结果就会是2或者4(当然结果不能是6,因为一个元素不能即在一个元素之前又在一个元素之后) 如果b在a之后则返回4,但是sort()需要一个负数。如果b在a之前则返回2,但是sort()需要一个正数。为了给sort()一个正确的结果我把他们用3来减。这样就得到1或者-1,这样sort()就能对元素进行正确的排序,resultArray中的元素也按照他们在文档种的出现顺序排列。 然后我们返回resultArray给调用它的函数。记住如果浏览器不支持sourceIndex或者compareDocumentPosition数组就没有排序。 翻译地址: 转载请保留以下信息 作者:北玉(tw:@rehawk)

推荐整理分享JavaScript DOM学习第四章 getElementByTagNames(js dom方法),希望有所帮助,仅作参考,欢迎阅读内容。

JavaScript DOM学习第四章 getElementByTagNames(js dom方法)

文章相关热门搜索词:js dom操作方法,javascript中的dom,javascriptdom编程,javascript的dom,js中dom的用法,js domcontentloaded,js dom操作方法,js dom操作方法,内容如对您有帮助,希望把文章链接给更多的朋友!

JavaScript DOM 学习第五章 表单简介 因为每一个表单的检测项都不同,所以我也不能给你一个万能的代码。你需要用我在这一章介绍的这些元素构建自己的检测函数。我在后面一张还有一

JavaScript DOM学习第六章 表单实例 表单实例这是一个表单的实力。这里有一个小问题:因为我的服务器现在不支持,所以表单不能提交。我会打印出你的输入,然后返回一个false,这样表

JavaScript DOM 学习第七章 表单的扩展 想法假设你有一个在线的CD评级工具。你希望用户查看他们喜欢的所有CD。但是你怎么知道用户平均会查看多少张呢?你在这个页面上需要添加多少字段

标签: js dom方法

本文链接地址:https://www.jiuchutong.com/biancheng/381852.html 转载请保留说明!

上一篇:JavaScript DOM 学习第三章 内容表格(javascript的dom)

下一篇:JavaScript DOM 学习第五章 表单简介(javascript的dom)

  • 个体工商户是否跨省经营
  • 上个月的普票开错了怎么办
  • 人工费已经支付怎么入账
  • 无形资产处置收益计入
  • 银行贷款印花税是什么意思
  • 应收利息对应什么科目
  • 投标函中的其他是指什么
  • 固定资产的净收益和净损失怎么计算
  • 逾期不缴纳税款责令限改期限内改正的
  • 差额征税怎么交税
  • 以合并方式成立的新企业,新启用
  • 分期收款销售商品确认收入会计分录
  • 核定征收个体户个人经营所得税
  • 国外客户手续费差异账务处理如何做?
  • 购进的材料没有发票可以入库吗?
  • 税前扣除的职工教育经费
  • 民间非营利性组织
  • 行政单位无法支付怎么办
  • 减免税款如何申报
  • 年末增值税结转账务处理流程
  • 公司没有员工需要缴纳社保吗
  • 啤酒消费税的计税基础
  • 股票期权所得税率
  • 附加税记入什么科目
  • 资本公积要交印花税账簿税吗
  • 出口退税换汇率多少是正常
  • 营改增后不动产进项税额抵扣
  • 公司缴纳的社保离职后自己可以缴纳社保
  • 这个月只开了销项负数怎么办
  • 海关增值税发票双抬头
  • 佣金可以开票吗
  • u盘文件全都变成快捷方式怎么办
  • 增值税专用发票的税率是多少啊
  • 财务里计提是什么意思
  • 顺丰充值的钱可以退吗
  • win11系统怎么进入运行界面
  • 跨年冲减无发票怎么入账
  • 电脑网络提示ip地址错误怎么办
  • 企业汇算清缴怎么退税
  • 工程款包工包料怎么开票
  • 收到的担保费如何记账
  • idea如何运行ssm项目spring
  • 东洛锡安的金黄麦田,苏格兰 (© Scott Masterton/plainpicture)
  • 在代开发票时已经预缴个人所得税了,怎么处理?
  • php+mongodb
  • 【GitHub Copilot X】基于GPT-4的全新智能编程助手
  • 准予扣除业务招标的情形
  • 小规模附加税减免性质代码如何选
  • 土方工程合同签了一般多久开工
  • java string.class
  • 土地被政府收回会计分录
  • 企业分红所得需要缴纳企业所得税吗
  • 应收账款与应付账款冲账
  • 企业所得税和个人所得税都要交吗
  • 建筑工程审计流程
  • 加权平均净资产收益率公式
  • 利息收入怎么做红字
  • 劳务支出如何做账
  • 永续债的清偿顺序是什么
  • 来料加工的特点包括
  • 直租业务可以抵房租吗
  • 电脑安装了安卓系统没用
  • windows打不开添加打印机
  • 32位与64位操作系统怎么区分从32位和64位的概念上进行讲述
  • win8系统的电脑
  • ubuntu上安装qt
  • linux ./执行
  • linux怎么用u盘传输文件
  • windows使用svn命令
  • win8操作系统安装
  • win8.1应用商店
  • win8软件不兼容怎么办
  • win7如何关闭ie浏览器
  • exec方法
  • vue中的组件通信
  • jquery时钟插件
  • 面向对象的java语言
  • jq写css样式
  • 山东省省级政务服务区有哪些
  • 福建生育登记证明电子版在哪查
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设