document.createElement()用法及注意事項(xiàng)(ff下不兼容)
今天處理了一個(gè)日期選擇器的ie和ff的兼容問(wèn)題,本來(lái)這種情況就很難找錯(cuò)誤,找了好久才把錯(cuò)誤定位到j(luò)s中創(chuàng)建元素的方法document.createElement(),這個(gè)方法在ie下支持這樣創(chuàng)建元素
var inputObj = document.createElement
("<input type='text' size='8' style='border:0px;border-bottom:2px solid #c0c0c0;' " readonly >");
但是這樣的情況在ff下是不兼容的。
還有就是特別注意input元素的創(chuàng)建:與 input 有關(guān)的元素有很多,比如:checkbox、radio、submit、reset...,因此創(chuàng)建 input 是個(gè)很特殊的用法。
創(chuàng)建不同的 input 正確的做法是:
<div id="board"></div>
<script type="text/javascript">
<!--
var board = document.getElementById("board");
var e = document.createElement("input");
e.type = "radio"; //緊接著上一行寫(xiě)
var obj = board.appendChild(e);
obj.checked = true;
//如下寫(xiě)法也是正確的:
//e.checked = true;
-->
</script>
針對(duì) input,在 Netscape、Opera 和 Firefox 中 e.type 既可以在 appendChild 之前,也可以在其之后。但在 IE 中 type 屬性必須在前,其它屬性必須在后。
IE 創(chuàng)建元素,還有一個(gè)特點(diǎn),就是可以連同屬性一同創(chuàng)建,比如:var e = document.createElement("<input type='radio' name='r' value='1' />"); 這在其它瀏覽器中是不行的,所以我們也不支持。
總結(jié):
•針對(duì)非 input 元素,各瀏覽器中,既可以把對(duì)元素屬性的改變寫(xiě)在顯示元素(insertBefore 或 appendChild)之前,也可以在其后。
•針對(duì) input 元素,為了兼容 IE,type 屬性寫(xiě)在顯示元素(insertBefore 或 appendChild)之前,其它屬性寫(xiě)在其后。
推薦:
•除了 input 元素的 type 屬性寫(xiě)在顯示元素(insertBefore 或 appendChild)之前外,其它屬性都寫(xiě)在顯示元素之后。
•改變屬性時(shí),對(duì)寫(xiě)在顯示元素(insertBefore 或 appendChild)之前的用 createElement 的返回值,對(duì)寫(xiě)在顯示元素之后的用 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) 返回指定結(jié)點(diǎn)的引用
getElementsByTagName(name) 返回文檔中所有匹配的元素的集合
createElement(name) 創(chuàng)建指定類(lèi)型的新結(jié)點(diǎn)
createTextNode(text) 創(chuàng)建一個(gè)純文本結(jié)點(diǎn)
element方法:
getAttribute(id) 返回指定屬性的值
setAttribute(id,value) 給屬性賦值
removeAttribute(id) 移除指定屬性和它的值
getElementsByTagName(name) 返回結(jié)點(diǎn)內(nèi)所有匹配的元素的集合
node方法:
appendChild(child) 給指定結(jié)點(diǎn)添加一個(gè)新的子結(jié)點(diǎn)
removeChild(child) 移除指定結(jié)點(diǎn)的子結(jié)點(diǎn)
replaceChild(newChild,oldChild) 替換指定結(jié)點(diǎn)的子結(jié)點(diǎn)
insertBefore(newChild,refChild) 在同一層級(jí)的結(jié)點(diǎn)前面插入新結(jié)點(diǎn)
hasChildNodes() 如果結(jié)點(diǎn)有子結(jié)點(diǎn)則返回true
node屬性:
nodeName 以字符串的格式存放結(jié)點(diǎn)的名稱(chēng)
nodeType 以整型數(shù)據(jù)格式存放結(jié)點(diǎn)的類(lèi)型
nodeValue 以可用的格式存放結(jié)點(diǎn)的值
parentNode 指向結(jié)點(diǎn)的父結(jié)點(diǎn)的引用
childNodes 指向子結(jié)點(diǎn)的引用的集合
firstChild 指向子結(jié)點(diǎn)結(jié)合中的第一個(gè)子結(jié)點(diǎn)的引用
lastChild 指向子結(jié)點(diǎn)結(jié)合中的最后一個(gè)子結(jié)點(diǎn)的引用
動(dòng)態(tài)加載js
var Rash=true;
var msg="";
function norash()
{
if (confirm("確定要取消嗎"))
Rash=false;
}
function rashit()
{
setInterval('getrss()',Inttime);
}
function getrss()
{
if (Rash==true)
{
head=document.getElementsByTagName('head').item(0);
script=document.createElement('script');
script.src='INCLUDE/AutoUpdate.asp';
script.type='text/javascript';
script.defer=true;
void(head.appendChild(script));
window.status=msg;
}
}
rashit();
相關(guān)文章
JS簡(jiǎn)單去除數(shù)組中重復(fù)項(xiàng)的方法
這篇文章主要介紹了JS簡(jiǎn)單去除數(shù)組中重復(fù)項(xiàng)的方法,涉及javascript針對(duì)數(shù)組的遍歷、判斷與運(yùn)算相關(guān)操作技巧,需要的朋友可以參考下2016-09-09JavaScript獲取當(dāng)前運(yùn)行腳本文件所在目錄的方法
這篇文章主要介紹了JavaScript獲取當(dāng)前運(yùn)行腳本文件所在目錄的方法,涉及JavaScript文件目錄操作的相關(guān)技巧,需要的朋友可以參考下2016-02-02為什么說(shuō)JavaScript預(yù)解釋是一種毫無(wú)節(jié)操的機(jī)制詳析
這篇文章主要給大家介紹了關(guān)于為什么說(shuō)JavaScript預(yù)解釋是一種毫無(wú)節(jié)操的機(jī)制的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧2018-11-11JavaScript中獲取當(dāng)前時(shí)間yyyymmddhhmmss的六種實(shí)現(xiàn)方式
js中提供了一個(gè)Date對(duì)象供我們獲取當(dāng)前時(shí)間,下面這篇文章主要給大家介紹了關(guān)于JavaScript中獲取當(dāng)前時(shí)間yyyymmddhhmmss的六種實(shí)現(xiàn)方式,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-12-12JS實(shí)現(xiàn)鼠標(biāo)移上去顯示圖片或微信二維碼
本文給大家分享一段使用的js代碼實(shí)現(xiàn)鼠標(biāo)移入顯示圖片或微信二維碼樣式,代碼簡(jiǎn)單易懂,非常不錯(cuò),需要的朋友參考下吧2016-12-12javascript類(lèi)型系統(tǒng) Array對(duì)象學(xué)習(xí)筆記
這篇文章主要介紹了javascript類(lèi)型系統(tǒng)之Array對(duì)象,整理關(guān)于Array對(duì)象的學(xué)習(xí)筆記,感興趣的小伙伴們可以參考一下2016-01-01