");但是這樣的情況在" />

亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

document.createElement()

系統 1780 0

今天處理了一個日期選擇器的ie和ff的兼容問題,本來這種情況就很難找錯誤,找了好久才把錯誤定位到js中創建元素的方法document.createElement(),這個方法在ie下支持這樣創建元素

var inputObj???? = document.createElement
???? (
" <input type='text' size='8' style='border:0px;border-bottom:2px solid #c0c0c0;' " readonly > " );


但是這樣的情況在ff下是不兼容的。
還有就是特別注意input元素的創建:與 input 有關的元素有很多,比如:checkbox、radio、submit、reset...,因此創建 input 是個很特殊的用法。

創建不同的 input 正確的做法是:

< div id = " board " ></ div >

< script type = " text/javascript " >
<!--
var board = document.getElementById( " board " );
var e = document.createElement( " input " );
e.type
= " radio " ; // 緊接著上一行寫
var obj = board.appendChild(e);
obj.checked
= true ;
// 如下寫法也是正確的:
//
e.checked = true;
-->
</ script >

針對 input ,在 Netscape、Opera 和 Firefox 中 e.type 既可以在 appendChild 之前,也可以在其之后。但在 IE 中 type 屬性必須在前,其它屬性必須在后。

IE 創建元素,還有一個特點,就是可以連同屬性一同創建,比如:var e = document.createElement("<input type='radio' name='r' value='1' />"); 這在其它瀏覽器中是不行的,所以我們也不支持。

總結:

  • 針對非 input 元素,各瀏覽器中,既可以把對元素屬性的改變寫在顯示元素(insertBefore 或 appendChild)之前,也可以在其后。
  • 針對 input 元素,為了兼容 IE,type 屬性寫在顯示元素(insertBefore 或 appendChild)之前,其它屬性寫在其后。

推薦:

  • 除了 input 元素的 type 屬性寫在顯示元素(insertBefore 或 appendChild)之前外,其它屬性都寫在顯示元素之后。
  • 改變屬性時,對寫在顯示元素(insertBefore 或 appendChild)之前的用 createElement 的返回值,對寫在顯示元素之后的用 insertBefore 或 appendChild 的返回值。
  1. var echkbox=document.createElement( "input" ); ??
  2. echkbox.setAttribute( "type" , "checkbox" ); ??
  3. echkbox.setAttribute( "id" , "inputid" ); ??
  4. echkbox.setAttribute( "name" , "inputname" ); ??
  5. echkbox.setAttribute( "value" , "inputvalue" ); ??
  6. var addhere=document.getElementById( "someElementId" ); ??
  7. addhere.appendChild(echkbox); ??
  8. echkbox.setAttribute( "checked" , "checked" ); ??
  9. alert(document.getElementById( "inputid" ).checked);

<!--document方法:
getElementById(id)??????????????????????????? 返回指定結點的引用
getElementsByTagName(name)?????? 返回文檔中所有匹配的元素的集合
createElement(name)???????????????????????? 創建指定類型的新結點
createTextNode(text)???????????????????????? 創建一個純文本結點
element方法:
getAttribute(id)?????????????????????????????????? 返回指定屬性的值
setAttribute(id,value)???????????????????????? 給屬性賦值
removeAttribute(id)?????????????????????????? 移除指定屬性和它的值
getElementsByTagName(name)?????? 返回結點內所有匹配的元素的集合
node方法:
appendChild(child)???????????????????????????? 給指定結點添加一個新的子結點
removeChild(child)???????????????????????????? 移除指定結點的子結點
replaceChild(newChild,oldChild)?????? 替換指定結點的子結點
insertBefore(newChild,refChild)?????? 在同一層級的結點前面插入新結點
hasChildNodes()???????????????????????????????? 如果結點有子結點則返回true
node屬性:
nodeName???????????????????????????????????????? 以字符串的格式存放結點的名稱
nodeType?????????????????????????????????????????? 以整型數據格式存放結點的類型
nodeValue????????????????????????????????????????? 以可用的格式存放結點的值
parentNode??????????????????????????????????????? 指向結點的父結點的引用
childNodes???????????????????????????????????????? 指向子結點的引用的集合
firstChild??????????????????????????????????????????? 指向子結點結合中的第一個子結點的引用
lastChild???????????????????????????????????????????? 指向子結點結合中的最后一個子結點的引用

document.createElement()


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产精品一区二区在线播放 | 亚洲精品短视频 | 国产123区| 日本a视频| xxxx免费国产在线视频 | 国产精品9999久久久久仙踪林 | 91在线小视频 | 国产视频久 | 99视频只有精品 | 一级日本高清视频免费观看 | 伊人久久国产 | 色综合久久天天综合观看 | 综合久久99久久99播放 | 色青青草原桃花久久综合 | 国产香蕉免费精品视频 | 国产真实乱子伦精品视 | 久久99国产精品视频 | 久久精品国产亚洲欧美 | a一区二区三区视频 | 国产精品久久久久久久y | 欧美啊v | 国产精品久久久久鬼色 | 天天做日日做 | 久久美女精品国产精品亚洲 | 久久精品福利 | 国产精品午夜激爽毛片 | 国产高清精品自在久久 | 四虎成人精品在永久免费 | 一级特级片 | 精品国产日韩久久亚洲 | 中文字幕日韩高清 | 亚洲国产成人资源在线桃色 | 亚洲精品老司机综合影院 | 69性影院在线观看国产精品87 | 久久精品中文字幕免费 | 免费操片 | 久久久久久夜精品精品免费 | 国产精品视频久久久久 | 最新国产麻豆精品 | 精品一区二区三区在线观看l | 国产精品午夜激爽毛片 |