亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

javascript 一段代碼引發(fā)的思考第1/2頁

 更新時間:2009年01月01日 15:30:50   作者:  
寫在前面:這是一個關于Ext, Prototype, JavaScript方面的問題,其實下面遇到的問題本不是問題,都是因為錯誤的理解造成的,本文的宗旨是希望讀者朋友避免我犯的同類錯誤,遇事三思而后行,同時也體會下發(fā)現問題,解決問題,反思問題這種精神活動所帶來的快樂!
在2008年的最后一天,在此祝愿大家元旦快樂!!!
鄭重聲明:此問題根本不是問題,現在看來就是本人知識匱乏,庸人自擾,望廣大朋友勿噴!!
細心發(fā)現問題,耐心解決問題,信心面對問題.
作者:白某人
長話短說:”服務員,上代碼....”
測試代碼:

[Ctrl+A 全選 注:引入外部Js需再刷新一下頁面才能執(zhí)行]

以下是在IE下的測試.我所期望的結果是(旁白:我已經開始犯錯了):
<div id="div88">this is div88</div>
<div id="div2">this is div2</div>
<div id="div3">this is div3</div>
實際結果:
<div id="div88">this is div88</div>
問題:
Div2,div3 丟了?
發(fā)現問題怎么辦?看代碼.
Template.js line:197 (Extjs ver 2.2)
append : function(el, values, returnElement){
return this.doInsert('beforeEnd', el, values, returnElement);
}
在看 line201:
doInsert : function(where, el, values, returnEl){
el = Ext.getDom(el);
var newNode = Ext.DomHelper.insertHtml(where, el, this.applyTemplate(values));
return returnEl ? Ext.get(newNode, true) : newNode;
}
在在看:DomHelper.js line:267
insertHtml : function(where, el, html){
where = where.toLowerCase();
if(el.insertAdjacentHTML){
if(tableRe.test(el.tagName)){
var rs;
if(rs = insertIntoTable(el.tagName.toLowerCase(), where, el, html)){
return rs;
}
}
switch(where){
case "beforebegin":
el.insertAdjacentHTML('BeforeBegin', html);
return el.previousSibling;
case "afterbegin":
el.insertAdjacentHTML('AfterBegin', html);
return el.firstChild;
case "beforeend":
el.insertAdjacentHTML('BeforeEnd', html);
return el.lastChild;
case "afterend":
el.insertAdjacentHTML('AfterEnd', html);
return el.nextSibling;
}
throw 'Illegal insertion point -> "' + where + '"';
}
//////后面省略
}
原來還是用的insertAdjacentHTML方法,為什么會有問題呢?
輸出中間代碼:
var tpl = new Ext.Template('<div id="div{id}">this is div{id}</div>');
tpl.append('div1',{id:'2'});
tpl.insertAfter('div2',{id:'3'});
$("result-area").innerText = Ext.getDom("div1").innerHTML;
//.........
結果如下:
this is div1
<DIV id=div2>this is div2</DIV>
<DIV id=div3>this is div3</DIV>
?????? 為什么會這樣? “this is div1”兩邊的<div>標簽呢?
在測試:
var tpl = new Ext.Template('<div id="div{id}">this is div{id}</div>');
tpl.append('div1',{id:'2'});
tpl.insertAfter('div2',{id:'3'});
$("result-area").innerText = Ext.getDom("div1").outerHTML;
//.........
結果如下:
<DIV id=div1>
this is div1
<DIV id=div2>this is div2</DIV>
<DIV id=div3>this is div3</DIV>
</DIV>
(旁白:本來到這就已經能發(fā)現問題所在了,但執(zhí)迷不悟,繼續(xù)犯錯)
原來它把div2,div3插到div1的value/text 后邊了.所以運行tpl.overwrite('div1',{id:'88'});后div2,div3沒了.
在此附上tpl.overwrite源碼(innerHTML直接賦值):
overwrite : function(el, values, returnElement){
el = Ext.getDom(el);
el.innerHTML = this.applyTemplate(values);
return returnElement ? Ext.get(el.firstChild, true) : el.firstChild;
}
問題知道了,可怎么辦呢,改Ext源碼?

相關文章

  • JavaScript Promise 用法

    JavaScript Promise 用法

    “Promises”漸漸成為JavaScript里最重要的一部分,大量的新API都開始promise原理實現。這篇文章主要為大家詳細介紹了JavaScript Promise 用法,感興趣的小伙伴們可以參考一下
    2016-06-06
  • 基于Three.js制作一個3D中國地圖

    基于Three.js制作一個3D中國地圖

    這篇文章主要為大家介紹一個用Three.js制作的3D中國地圖,文中的示例代碼講解詳細,對我們學習three.js有一定幫助,感興趣的可以跟隨小編一起試一試
    2022-01-01
  • 微信小程序實現導航欄選項卡效果

    微信小程序實現導航欄選項卡效果

    這篇文章主要為大家詳細介紹了微信小程序實現導航欄選項卡效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • Bootstrap在線電子商務網站實戰(zhàn)項目5

    Bootstrap在線電子商務網站實戰(zhàn)項目5

    這篇文章主要為大家分享了Bootstrap在線電子商務網站實戰(zhàn)項目,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • JavaScript實現的多個圖片廣告交替顯示效果代碼

    JavaScript實現的多個圖片廣告交替顯示效果代碼

    這篇文章主要介紹了JavaScript實現的多個圖片廣告交替顯示效果代碼,涉及javascript數組遍歷及頁面元素動態(tài)操作技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-09-09
  • JS中數組Array的用法示例介紹

    JS中數組Array的用法示例介紹

    這篇文章主要介紹了JS中數組Array的用法,需要的朋友可以參考下
    2014-02-02
  • JavaScript Array.flat()函數用法解析

    JavaScript Array.flat()函數用法解析

    這篇文章主要介紹了JavaScript Array.flat()函數用法解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-09-09
  • javascript異步編程代碼書寫規(guī)范Promise學習筆記

    javascript異步編程代碼書寫規(guī)范Promise學習筆記

    這篇文章主要介紹了javascript異步編程代碼書寫規(guī)范Promise學習筆記,需要的朋友可以參考下
    2015-02-02
  • 詳解JavaScript的數據類型以及數據類型的轉換

    詳解JavaScript的數據類型以及數據類型的轉換

    這篇文章主要介紹了JavaScript的數據類型以及數據類型的轉換,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-04-04
  • bootstrap Table的一些小操作

    bootstrap Table的一些小操作

    這篇文章主要為大家詳細介紹了bootstrap Table的一些小操作,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-11-11

最新評論