javascript針對DOM的應用分析(三)

來源:互聯網
上載者:User

如果這個DOM元素沒有樣式也就談不上操作了。2.我們也可以直接用JS動態向html裡寫入DOM元素。
今天這章我們就講這兩個應用
(一)對html裡現有的DOM元素進行操作。
我上面說了,對現有的DOM元素進行操作,無非就是對樣式的操作。所以我們首先就要能擷取這個DOM元素的樣式。在講擷取DOM元素的樣式之前。先要說下DOM元素的樣式連結方式。有三種。

一是直接在html文檔裡寫入樣式例如
<div style="width:300px;height:200px;background:#000;"></div>。

二是在html文檔頭部用樣式標籤插入例如
<style>
#dom{width:300px;height:200px;background:#000;}
</style>

三就是我們常用的鏈入方式例如
<link rel="stylesheet" type="text/css" href="css.css" />

這三種的用JS操作它樣式的方法都不太相同
重點我們說第一種鏈入樣式操作,因為是最常用的,也是最方便的。
第二種鏈入樣式操作麻煩。
第三種鏈入樣式操作麻煩不說,而且無法直接修改樣式,想修改的話還必須用第一種的方法,也就是說只能看不能摸

第一種鏈入樣式的操作方法
例<div id="dom" style="width:300px;height:200px;background:#000;margin-top:10px;"></div>
擷取它的高度屬性,首先當然是擷取DOM元素了,用前幾章的方法
var a = document.getElementById("dom");
再來擷取它的高度屬性,很簡單
var h = a.style.height;
以此類推,擷取寬度,擷取背景色
var w = a.style.width;
var bg = a.style.background;
注意那個外邊距屬性是margin-top;
要擷取這個不能直接寫
var mt = a.style.margin-top;
要用JQ中提到的駱駝寫法
var mt = a.style.marginTop;

擷取它當然沒什麼用處,我們要能修改,修改起來也很方便。例如我們要把它的高度變為100,很簡單,就一句
a.style.height = "100px";
其他的以此類推,我不再多說;

第二種鏈入樣式的操作方法
<style>
#dom{width:300px;height:200px;background:#000;margin-top:10px;}
</style>
這種操作需要區分瀏覽器。因為IE和FF對這個擷取的代碼不同,比如擷取高度的方法是
var domcss = document.styleSheets[0].cssRules||document.styleSheets[0].rules;
var a = domcss[0].style.height;
修改的話是這樣的
domcss[0].style.height = "100px";
這個我也不想解釋為什麼是這樣寫。大家感興趣的自己去查下;

第三種鏈入樣式的操作方法
<link rel="stylesheet" type="text/css" href="css.css" />
這種操作也需要區分瀏覽器。
擷取的話一般都是寫個函數,函數是這樣的
function CurrentStyle(element){
return element.currentStyle || document.defaultView.getComputedStyle(element, null);
}
假如我們那個css.css檔案裡面有height屬性
擷取方法是var a = CurrentStyle("dom").height;
無法用這裡的方法直接修改,只能用第一種方法修改
這個我也不想解釋為什麼是這樣寫。大家感興趣的自己去查下;

(二)用JS動態建立DOM元素。
其實這個很簡單就是幾個JS的方法而已,不過要像蓋房子一樣一步一步來,比如我要建立一個這樣的DOM元素:
<div id="dom" style="width:100px;height:100px;background:#000;margin-top:10px;"></div>

第一步,要建立一個div節點。var newobj = document.createElement("div");

第二步,要給這個節加一個id屬性,並且屬性名稱是dom。newobj.setAttribute("id","dom");

第三步,要給這個節點加屬性了這裡有兩種方,一種就是我們前面說到的修改樣式是這樣的newobj.style.width = "100px";還有一種就是第二步用到的那個方法newobj.setAttribute("width","100px"),其他屬性以此類推

第四步,就是要把這個節點給放到html文檔裡,方法是這樣的document.body.appendChild(newobj)這句的意思是這樣的。document.body就是擷取了body元素
,appendChild(newobj)就是向這個body元素裡添加一個孩子項目就是我們建立的那個節點。

如果你想移除這個節點是這樣document.body.removeChild(newobj);
(這個可以換的,換成你想要向那個裡面添加子項目的的那個元素,比如我想向id為con的這個元素添加節點我們就這樣寫document.getElementById("con").appendChild(newobj))

這就算是完成了。JS裡有很多和appendChild差不多的方法。用法和這個一樣大家有興趣的可以去百度一下。所以我這裡也就不說了,都不太常用。

好這章就到這裡了,下章開始就用開始教大家寫一些效果了。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.