天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

javascript 一段代碼引發的思考第1/2頁

在2008年的最后一天,在此祝愿大家元旦快樂!!!
鄭重聲明:此問題根本不是問題,現在看來就是本人知識匱乏,庸人自擾,望廣大朋友勿噴!!
細心發現問題,耐心解決問題,信心面對問題.
作者:白某人
長話短說:”服務員,上代碼....”
測試代碼:

[Ctrl+A 全選 注:如需引入外部Js需刷新才能執行]
以下是在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 丟了?
發現問題怎么辦?看代碼.
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>
(旁白:本來到這就已經能發現問題所在了,但執迷不悟,繼續犯錯)
原來它把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技術javascript 一段代碼引發的思考第1/2頁,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 色欲AV亚洲午夜精品无码 | 最美白嫩的极品美女ASSPICS | 成年人视频在线免费观看 | 久久九九青青国产精品 | 国产精品美女WWW爽爽爽视频 | 青草影院天堂男人久久 | 亚洲视频中文字幕在线观看 | 亚洲国产综合久久久无码色伦 | 久久综合网久久综合 | qovd电影 | 日本漫画母亲口工子全彩 | 伊人影院综合 | 妈妈的朋友5在线观看免费完整版中文 | 亚洲色爽视频在线观看 | BL全肉多攻NP高H | 亚洲男人的天堂久久精品麻豆 | 伊人久久综合成人亚洲 | 色婷婷AV99XX | 双性大乳浪受噗呲噗呲h总 双性被疯狂灌满精NP | 精品一二三区久久AAA片 | 亚洲免费无码中文在线 | www.久艹| 精品久久中文字幕有码 | 果冻传媒视频在线观看完整版免费 | 女人张腿让男人桶免费 | 沦为公交两奶头春药高潮迭起 | 国产AV精品久久久免费看 | 婷婷五月久久丁香国产综合 | 香蕉久久日日躁夜夜嗓 | 语文老师扒开胸罩喂我奶 | 亚洲免费高清视频 | 九九久久精品国产 | 久久精品视频15人人爱在线直播 | 日韩视频中文字幕精品偷拍 | 蜜柚在线观看免费高清官网视频 | 韩国女主播内部vip自带氏巾 | 无人区在线日本高清免费 | 甜性涩爱dvd | 天天操夜夜噜 | 午夜国产精品免费观看 | caoporn 超碰在线视频 |