innerHTML在Mozilla Firefox和Opera下执行的一个特例情况。
发布时间:2023-09-16 11:23:46
标签:innerHTML在Mozilla,Firefox和Opera下执行的一个特例情况,
是在CSDN论坛看到的一个问题,平常我也没有注意,或者说没有这样用吧。看代码
<body id="www.never-online.net"> <script> var foo = function() { var $ = function() { return document.getElementById(arguments[0]); } $("d2").innerHTML = $("d1").innerHTML; } //]]> </script> <h4>改动两个文本框里的值,把这个容器的innerHTML赋值给d2</h4> <button onclick="foo()">foo()</button> <div id="d1" style="color:red"> <input value='blog.never-online'/> <input value=""/> </div> <div id="d2"> </div> </body>
不是预期的结果吧?包括在Opera下执行的情况也是与Firefox下相同的,你可以尝试在Opera下运行就明白了。
如果能够得到我们预期的效果呢?我尝试着用__defineGetter__的方法在Mozilla下得到所有的innerHTML,在这里却给了我一些提示。比如:
<script type="text/javascript"> function elementDetail (e) { if (!e.attributes) return ""; var attrs = e.attributes; var str = "<" + e.tagName; for (var i=0; i"; return str; } function foo() { var a = document.getElementById("d1"); var str = ""; for (var i=0; i <h4>改动两个文本框里的值,把这个容器的innerHTML赋值给d2</h4> <button onclick="foo()">foo()</button> <div id="d1" style="color:red"> <input value='blog.never-online'/> <input value="script by never-online"/> </div> <div id="d2"> </div>
上面这些代码虽然达不到预期目的,但是却是要知道一定要得到attribute的值,因此我尝试着用下面这个方法来做。
<script type="text/javascript"> var $ = function(id) { return document.getElementById(id); } function foo() { $("d2").innerHTML = $("d1").innerHTML; } </script> <h4>改动两个文本框里的值,把这个容器的innerHTML赋值给d2</h4> <button onclick="foo()">foo()</button> <div id="d1"> <input value='blog.never-online' onkeyup="this.setAttribute('value',this.value)"/> <input value="script by never-online"/> </div> <div id="d2"></div>
这个方法却成功了,也就可以说明,在Mozilla下的innerHTML通过遍历元素的所有节点的tagName还有attrubutes来得到其innerHTML的。因此我们第一个例中的innerHTML得不到改动后的value值。
与此同时,Opera下这一招也可以用。也证明在Opera下的innerHTML也是通过遍历元素的所有节点的tagName还有attrubutes来得到其innerHTML的。
难道w3c里的标准是这样的吗?还没有空来得及查w3c的资料,所以也说不上是Opera与Mozilla下的巧合,还是IE下面比较让开发人员舒服的设计。


猜你喜欢
- ccs的优点:css相对xpath语法比xpath简洁,定位速度比xpath快css的缺点:css不支持用逻辑运算符来定位,而xpath支持
- Python 非常易学,强大的编程语言。Python 包括高效高级的数据结构,提供简单且高效的面向对象编程。Python 的学习过程少不了
- 背景:有一个list,里面的每一个元素都是dict,根据某一个key进行去重,在这里,key代表question#!/usr/bin/env
- 第一种方法:采用git命令操作1、例如仓库中有下面的代码(版本1)2、现在继续编写代码,并且提交到远程仓库中(版本2)3、回退到版本1中gi
- 在SQL Server 配置管理器中,展开SQL Server 2005的网络配置,然后点击服务器实例如:MSSQLSERVER 的协议。
- 在我们修改过页面的某些数据后,通过想要把页面刷新一下,看看修改后的结果。由于vue的存在,页面是不会自动刷新的,需要我们手动进行操作。在vu
- 本文实例讲述了Python切片操作。分享给大家供大家参考,具体如下:在很多编程语言中,针对字符串提供了截取函数,其实目的就是对字符串切片。P
- TTS简介TTS(Text To Speech)是一种语音合成技术,可以让机器将输入文本以语音的方式播放出来,实现机器说话的效果。TTS分成
- 爬虫中scrapy.Request的更多参数scrapy.Request的参数scrapy.Request(url[,callback,me
- (1)标准类型操作符(所有的集合类型)成员关系 (in, not in) &nbs
- 现在只要是有关头像的框基本都是圆形的了,C#提供的PictureBox控键默认情况下是方形的非常大的影响美观PictureBox默认情况下比
- 本文实例讲述了JavaScript实现五子棋游戏的方法。分享给大家供大家参考,具体如下:最近半个月一直在看深入的学习JavaScript,里
- 本文实例讲述了Python设计模式之命令模式原理与用法。分享给大家供大家参考,具体如下:命令模式(Command Pattern):将请求封
- 大家还记得我们在老版本中,对于线上环境配置中会把所有的 css 多打成一个文件:核心是使用了插件 extract-text-webpack-
- 一、多行函数又称组合函数(Group Functions)、聚合函数 1、 Types of Group Functions avg、cou
- 过年回家,都会约上亲朋好友聚聚会,会上经常会打麻将,斗地主,斗牛。在这些游戏中,斗牛是最受欢迎的,因为可以很多人一起玩,而且没有技术含量,都
- 前言最近 GitHub 上有个基于 ChatGPT API 的浏览器脚本,openai-translator, 短时间内 star 冲到了
- 1.sort()方法sort()是列表的方法,修改原列表使得它按照大小排序,没有返回值,返回NoneIn [90]: x = [4, 6,
- 在SQL Server 中每个变量、参数、表达式等都有数据类型。系统提供的数据类型分为几大类,如表4-2 所示。&
- 近期有一个业务需求,多台机器需要同时从Mysql一个表里查询数据并做后续业务逻辑,为了防止多台机器同时拿到一样的数据,每台机器需要在获取时锁