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下面比较让开发人员舒服的设计。
0
投稿
猜你喜欢
- 学习目的: 掌握最基本的Label、TextBox、Button控件用法 掌握用StringBuider类连接字符串 理解服务器的环境变量
- 想必每个DBA都喜欢挑战数据导入时间,用时越短工作效率越高,也充分的能够证明自己的实力。实际工作中有时候需要把大量数据导入数据库,然后用于各
- 通常,你需要获得当前日期和计算一些其他的日期,例如,你的程序可能需要判断一个月的第一天或者最后一天。你们大部分人大概都知道怎样把日期进行分割
- 本文实例讲述了Python实现求两个数组交集的方法。分享给大家供大家参考,具体如下:一、题目给定两个数组,编写一个函数来计算它们的交集。例1
- 其实我这样做的本意是为了防止盗链!大家帮忙看一下通过代码能够根治盗链!只要不是HTTP_REFERER来源于(google.com goog
- 最近在研究tensorflow自带的例程speech_command,顺便学习tensorflow的一些基本用法。其中tensorboard
- 同伪类的方式类似,伪元素通过对插人到文档中的虚构元素进行触发,从而达到某种效果。在CSS1里,有两个伪元素,即:first-letter和f
- js对文字进行编码涉及3个函数:escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,
- 当你准备全面进军web标准时,有时候你是不是被表格的弄得焦头烂额呢?比如,原来使用“非法”的nobr现在要用什么来代替呢?今天,就让我来一个
- 以前看到 andy的关于“Quiet Structure”觉的很不错,于是今天到她的个人站点上逛逛,发现不少好的文章,今天介绍的是
- 导航是网页设计的重点,我们在设计一个网站的时候,常常从导航入手,不夸张的说,导航的设计甚至决定了整个网站的风格。这就需要我们平常多留心收集优
- 桥接模式(Bridge Pattern)是什么桥接模式是一种结构型模式,它将抽象部分与实现部分分离开来,使它们可以独立地变化。在桥接模式中,
- 读《论语》,子张十九,子夏曰:博学而笃志,切问而近思,仁在其中矣。 博学:架构需要广度,要尽量多学习各方面的知识。笃志:除了广度,架构师还需
- 一、什么是sql子查询? 子查询是一个嵌套在Select 、Insert 、Update 或Dele
- 一:操作session1:session配置Session 的配置文件存储在config/session.php中,配置参数有:(1):配置
- 本文实例讲述了JS实现运动缓冲效果的封装函数。分享给大家供大家参考,具体如下:之前经常写运动函数,要写好多好多,后来想办法封装起来。(运动缓
- ExtJS可以用来开发RIA也即富客户端的AJAX应用,是一个用javascript写 的,主要用于创建前端用户界面,是一个与后台技术无关的
- 如何在约定时间显示特定的提示信息?<%Function Greeting()
- 1.什么是Javascript?Javascript是一种用于Web开发的编程语言。JavaScript在网络的客户端上运行。根据MDN,J
- PHP implode() 函数实例把数组元素组合为一个字符串:<?php $arr = array('Hello',