国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > WEB開發 > 正文

innerHTML在Firefox和Opera下的執行特例

2024-04-27 13:56:04
字體:
來源:轉載
供稿:網友

是在CSDN論壇看到的一個問題,平常我也沒有注意,或者說沒有這樣用吧。看代碼:

以下是引用片段:
 <body id=" <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<attrs.length; i++) {
    str += ' ' +attrs[i].name+ '="' +attrs[i].value+ '"';
  }; str += ">";
  return str;
}
function foo() {
  var a = document.getElementById("d1");
  var str = "";
  for (var i=0; i<a.childNodes.length; i++) {
    var chld = a.childNodes[i];
    str += elementDetail(chld);
  }
  alert(str);
}

</script>

<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下面比較讓開發人員舒服的設計。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 蒙阴县| 闸北区| 井冈山市| 赤峰市| 富蕴县| 仁怀市| 邵东县| 静宁县| 衡南县| 当阳市| 开原市| 石楼县| 柞水县| 自治县| 洞口县| 应用必备| 高雄县| 德江县| 乐都县| 泾阳县| 磐安县| 云龙县| 清苑县| 望城县| 施甸县| 海南省| 葵青区| 大连市| 怀远县| 玉龙| 龙山县| 沂南县| 盐城市| 斗六市| 原阳县| 台中县| 黔东| 涞源县| 丹阳市| 洪洞县| 托克托县|