最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

解決IE下select標(biāo)簽innerHTML插入option的BUG(兼容IE,FF,Opera,Chrome,Safari)

 更新時間:2010年05月13日 17:45:37   作者:  
在ie下面使用innerHTML來插入option選項(xiàng)的話,ie會去掉前面的<option>,并拆分成多個節(jié)點(diǎn),這樣會造成select的出錯
前言:
這是一個老bug了,現(xiàn)在提供一個完美解決方案。由于我一直是用createElement來創(chuàng)建動態(tài)的option并添加,所以一直沒有遇到這個問題,但是每個人寫代碼風(fēng)格不同,有的人就喜歡寫字符串形式的標(biāo)簽并用innerHTML插入,這不就有問題了,為了方便不同編碼風(fēng)格的人,我封裝了一個方法,用于解決ie的這個bug和兼容5大瀏覽器,這樣大家都可以用一個方法來實(shí)現(xiàn)不同的風(fēng)格,便于維護(hù)管理。

bug描述:
在ie下面使用innerHTML來插入option選項(xiàng)的話,ie會去掉前面的<option>,并拆分成多個節(jié)點(diǎn),這樣會造成select的出錯,不是沒有插進(jìn)去,而是節(jié)點(diǎn)在轉(zhuǎn)換時出問題了,微軟對這個bug也有描述,并提供了兩個解決方案,大家可以自己搜索一下,我大概提下微軟的兩個方案。
1,使用createElement,這個是正規(guī)渠道,要出錯還真有問題了。
2,插入完整的select字符串,到div中。

實(shí)現(xiàn):
  原理:
  既然是使用innerHTML的人,肯定是想用字符串來插入option了,這里主要就是解決這人人群,當(dāng)然你也可以傳入createElement對象來插入。
  對于傳入的參數(shù)會做個判斷,看是elementObj還是字符串,如果是elementObj那么就使用標(biāo)準(zhǔn)的add方法加入,并做兼容處理。如果是字符串則使用div包裝完整的select并轉(zhuǎn)換成dom對象用appendChild來加入。

  注意:
  b$.type.isElement(arg)是bBank里面用來判斷對象是否是element元素的方法
  b$.browser.isIE()是bBank里面用來判斷是否是ie的方法
  b$.parseDom(str)是bBank里面用來轉(zhuǎn)換字符串為標(biāo)準(zhǔn)dom的方法,在我前面的博客中有專門講解
  bBank 框架介紹:http://www.cnblogs.com/bruceli/archive/2010/04/15/bBank.html
復(fù)制代碼 代碼如下:

      var sltObj=document.getElementById('xx');//獲取select對象,這里只是給個例子,可以按自己習(xí)慣來獲取
      function addOption(obj, arg) {
if (b$.type.isElement(arg)) {
if (b$.browser.isIE()) obj.add(arg);
else obj.add(arg, null);
return;
}
var str = '<select>' + arg + '</select>';
var slt = b$.parseDom(str)[0];
for (var i = 0, num = slt.length; i < num; i++) {
obj.appendChild(slt[0]);
}
};

  使用:
復(fù)制代碼 代碼如下:

    addOption(sltObj, '<option>a</option>');


END
到這里就結(jié)束了,在這里向大家推薦一個我自己寫的js框架,上面的這個方法集成在框架里面了
使用:b$('obj').addOption(arg);

相關(guān)文章

  • 詳解axios中封裝使用、攔截特定請求、判斷所有請求加載完畢)

    詳解axios中封裝使用、攔截特定請求、判斷所有請求加載完畢)

    這篇文章主要介紹了axios中封裝使用、攔截特定請求、判斷所有請求加載完畢的相關(guān)知識,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-04-04
  • 前端項(xiàng)目中報錯Uncaught?(in?promise)的解決方法

    前端項(xiàng)目中報錯Uncaught?(in?promise)的解決方法

    最近在做項(xiàng)目的時候控制臺報了一個錯Uncaught(in promise) false,這篇文章主要給大家介紹了關(guān)于前端項(xiàng)目中報錯Uncaught?(in?promise)的解決方法,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-04-04
  • JS實(shí)現(xiàn)簡單可拖動的模態(tài)框

    JS實(shí)現(xiàn)簡單可拖動的模態(tài)框

    這篇文章主要為大家詳細(xì)介紹了JS實(shí)現(xiàn)簡單可拖動的模態(tài)框,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • JS庫之Highlight.js的用法詳解

    JS庫之Highlight.js的用法詳解

    highlight.js是一款輕量級的Web代碼語法高亮庫。下面通過實(shí)例代碼給大家分享JS庫之Highlight.js的用法詳解,感興趣的朋友跟隨腳本之家小編一起學(xué)習(xí)吧
    2017-09-09
  • JS實(shí)現(xiàn)時間軸自動播放

    JS實(shí)現(xiàn)時間軸自動播放

    這篇文章主要為大家詳細(xì)介紹了JS實(shí)現(xiàn)時間軸自動播放,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • JS生成隨機(jī)打亂數(shù)組的方法示例

    JS生成隨機(jī)打亂數(shù)組的方法示例

    這篇文章主要介紹了JS生成隨機(jī)打亂數(shù)組的方法,涉及javascript數(shù)組隨機(jī)排序的相關(guān)操作技巧,需要的朋友可以參考下
    2017-12-12
  • 詳細(xì)分析Javascript中創(chuàng)建對象的四種方式

    詳細(xì)分析Javascript中創(chuàng)建對象的四種方式

    這篇文章詳細(xì)介紹了Javascript中創(chuàng)建對象的幾種方式與每種方式的優(yōu)缺點(diǎn),其中包括工廠模式、構(gòu)造函數(shù)模式、原型模式和組合使用構(gòu)造函數(shù)模式和原型模式,有需要的小伙伴們一起來學(xué)習(xí)學(xué)習(xí)吧。
    2016-08-08
  • 在layui下對元素進(jìn)行事件綁定的實(shí)例

    在layui下對元素進(jìn)行事件綁定的實(shí)例

    今天小編就為大家分享一篇在layui下對元素進(jìn)行事件綁定的實(shí)例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-09-09
  • js刪除局部變量的實(shí)現(xiàn)方法

    js刪除局部變量的實(shí)現(xiàn)方法

    下面小編就為大家?guī)硪黄猨s刪除局部變量的實(shí)現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-06-06
  • JavaScript 應(yīng)用技巧集合[推薦]

    JavaScript 應(yīng)用技巧集合[推薦]

    前段時間我曾經(jīng)對JavaScript中的應(yīng)用技巧進(jìn)行了收集和總結(jié)這里我將會對這些應(yīng)用技巧進(jìn)行集中描述,如果你覺得遺漏了一些好用的應(yīng)用技巧,也請?jiān)诹粞灾刑岢觯視皶r更新到這篇文章中的。
    2009-08-08

最新評論

富平县| 梁河县| 远安县| 密云县| 开平市| 海盐县| 大宁县| 博罗县| 湘乡市| 巴林左旗| 富源县| 尚义县| 黑山县| 平果县| 叙永县| 英山县| 静安区| 沧源| 锦屏县| 锦屏县| 通许县| 新余市| 高雄市| 三穗县| 财经| 柞水县| 蒙城县| 宁武县| 炎陵县| 西昌市| 山东| 北碚区| 太仓市| 泌阳县| 霸州市| 驻马店市| 海城市| 清苑县| 德安县| 西丰县| 井陉县|